当前位置: 首页 > 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()

相关文章:

  • 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)在特定领域的学习和推理能力
  • 鄂州手机网站设计/网站推广怎么弄
  • 代做课程设计的网站/怎么样做推广
  • 企业网站服务费怎么做记账凭证/今日头条新闻
  • 海口有哪几家是做网站的/网络营销是做什么的工作
  • 照明公司网站制作/网站如何快速收录
  • 教做黏土手工的网站/英文网站推广