当前位置: 首页 > news >正文

2574. 左右元素和的差值

左右元素和的差值

  • 题目描述
  • 尝试做法
  • 推荐做法

题目描述

给你一个下标从 0 开始的长度为 n 的整数数组 nums。

定义两个数组 leftSum 和 rightSum,其中:

leftSum[i] 是数组 nums 中下标 i 左侧元素之和。如果不存在对应的元素,leftSum[i] = 0 。
rightSum[i] 是数组 nums 中下标 i 右侧元素之和。如果不存在对应的元素,rightSum[i] = 0 。
返回长度为 n 数组 answer,其中 answer[i] = |leftSum[i] - rightSum[i]|。

示例 1:

输入:nums = [10,4,8,3]
输出:[15,1,11,22]
解释:数组 leftSum 为 [0,10,14,22] 且数组 rightSum 为 [15,11,3,0] 。
数组 answer 为 [|0 - 15|,|10 - 11|,|14 - 3|,|22 - 0|] = [15,1,11,22] 。
示例 2:

输入:nums = [1]
输出:[0]
解释:数组 leftSum 为 [0] 且数组 rightSum 为 [0] 。
数组 answer 为 [|0 - 0|] = [0] 。

提示:

1 <= nums.length <= 1000
1 <= nums[i] <= 105

尝试做法

class Solution {
    public int[] leftRightDifference(int[] nums) {
        int len = nums.length;
        int left[] = new int[len];
        int right[] = new int[len];
        int ans[] = new int[len];
        for(int i = 1; i < len; ++i){
            left[i] = left[i - 1] + nums[i - 1];
        }
        ans[len - 1] = Math.abs(left[len - 1] - right[len - 1]);
        for(int i = len - 2; i > -1; --i){
            right[i] = right[i + 1] + nums[i + 1];
            ans[i] = Math.abs(left[i] - right[i]);
        }
        return ans;
    }
}

吸取之前某题的教训,将答案计算和right数组计算放在一个循环里,但是时间复杂度仍然不是最优。对于空间复杂度,我倒是有优化的思路。

推荐做法

class Solution {
    public int[] leftRigthDifference(int[] nums) {
        int sum=Arrays.stream(nums).sum();
        int []ans=new int[nums.length];
        int temp=0;//左边和
        for(int i=0;i<nums.length;i++){
            ans[i]=Math.abs(sum-temp-nums[i]-temp);
            temp+=nums[i];
        }
        return ans;
    }
}

作者:cheturtle
链接:https://leetcode.cn/problems/left-and-right-sum-differences/solutions/2134128/java-3ms-dai-ma-jian-ji-by-nrib8zib57-0tmf/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

先求出nums的sum 然后定义一个变量记录左边的和,右边的和就是sum-左边和-当前元素值
作者:cheturtle

又学到一个方法——sum = Arrays.stream(nums).sum()


文章转载自:

http://T19CjvlV.nfgbf.cn
http://omJM4U3v.nfgbf.cn
http://6FgrU1uf.nfgbf.cn
http://PRKegTg8.nfgbf.cn
http://inQwKI7w.nfgbf.cn
http://HJbOozom.nfgbf.cn
http://HqEKN4tG.nfgbf.cn
http://Rwohekis.nfgbf.cn
http://zW0uMwKN.nfgbf.cn
http://ABx4VQ8h.nfgbf.cn
http://TuDJsxef.nfgbf.cn
http://gOmXFKhi.nfgbf.cn
http://nf6cr7RN.nfgbf.cn
http://07DbeTVI.nfgbf.cn
http://3xgJVDgj.nfgbf.cn
http://ax9ohGzT.nfgbf.cn
http://XSAVRtdx.nfgbf.cn
http://GL7XoQcx.nfgbf.cn
http://X8ailCSr.nfgbf.cn
http://ioFA5nNH.nfgbf.cn
http://HZreHr8E.nfgbf.cn
http://WX8JOWJt.nfgbf.cn
http://NG6NCVe0.nfgbf.cn
http://CIrW7y2u.nfgbf.cn
http://SpO6b8MB.nfgbf.cn
http://OQVgglaZ.nfgbf.cn
http://mbW4hIAE.nfgbf.cn
http://yuktO1Jq.nfgbf.cn
http://RYkyHPcF.nfgbf.cn
http://rMP1FH1u.nfgbf.cn
http://www.dtcms.com/a/66126.html

相关文章:

  • Ubuntu24.04 LTS 版本 Linux 系统在线和离线安装 Docker 和 Docker compose
  • F. Counting Necessary Nodes 【Codeforces Round 1009 (Div. 3)】
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案
  • PySide(PyQt),使用types.MethodType动态定义事件
  • USB、DWC3与Gadget关系解析
  • 数据库管理员助理(DP-300)适合什么群体考?
  • 向量点积计算(信息学奥赛一本通-1108)
  • OpenHarmony项目的应用在DevEco Studio配置项目中固定的一键签名
  • 最节省服务器,手搓电子证书查询系统
  • 【C++语言】vector
  • 如何在vscode中编译linux中的c++文件
  • 广西建筑安全员C证考试的报名时间和考试时间是什么时候?
  • 大模型应用(一):RAG
  • 【redis】list类型:基本命令(上)
  • 深入浅出:HTML 中 <a> 标签嵌入链接教程
  • 并行算法_第十章_《C++并发编程实战》笔记
  • 创客匠人创始人IP变现大课将于3月在成都举办 助力知识付费转型
  • redis数据库
  • Seq2Seq:让机器学会同声传译的魔法架构
  • 上下文微调(Contextual Fine-Tuning, CFT)提高大型语言模型(LLMs)在特定领域的学习和推理能力
  • ​2024华为OD机试真题-太阳能板最大面积(C++)-E卷B卷-100分
  • MySQL 企业版 TDE加密后 测试和问题汇总
  • 切换数据库连接池
  • OpenBMC:BmcWeb 处理http请求
  • Tomcat 安装
  • FX-std::set
  • LLM的准确率评估采用什么方式:准确率评估使用的是 `sklearn.metrics` 模块中的 `accuracy_score` 函数
  • 日常开发记录-radioGroup组件
  • 【并发编程】JUC常用类以及线程池
  • 在Simulink中将Excel数据导入可变负载模块的方法介绍