当前位置:网站首页>通关剑指 Offer——剑指 Offer II 012. 左右两边子数组的和相等
通关剑指 Offer——剑指 Offer II 012. 左右两边子数组的和相等
2022-08-10 01:20:00 【SK_Jaco】
1.题目描述
给你一个整数数组 nums ,请计算数组的 中心下标 。
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。
如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。
示例 1:
输入:nums = [1,7,3,6,5,6]
输出:3
解释:
中心下标是 3 。
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。
示例 2:
输入:nums = [1, 2, 3]
输出:-1
解释:
数组中不存在满足此条件的中心下标。
示例 3:
输入:nums = [2, 1, -1]
输出:0
解释:
中心下标是 0 。
左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),
右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0 。
2.解题思路与代码
2.1 解题思路
这道题需要求一个位置的左右两边所有数的和,来对比是否相同,那么就可以使用前缀和数组来进行解答。首先计算出数组的前缀和数组 sum[],然后在前缀和数组上进行遍历。当前位置 i 左边所有所有数之和等于 sum[i-1],当前位置右边所有数之和等于 sum 数组最后一位 减去当前位置,即sum[n-1]-sum[i],其中n等于数组长度。在便利的时候需要注意边界条件,sum 数组第一位的左边之和等于 0,最后一位的右边数组也等于 0 。以 [1, 7, 3, 6, 5, 6] 为例
首先计算数组的前缀和数组得到 sum=[1, 8, 11, 17, 22, 28],于是我们开始在 sum 数组上进行遍历。

由于 i=0 此时左边之和等于0,右边所有数的和等于 sum[n-1]-sum[i]
继续遍历以此计算 i 位置的左右和,当 i=3 是得到左右之和都为 11,满足条件,返回当前位置 i=3。
2.2 代码
class Solution {
public int pivotIndex(int[] nums) {
int n = nums.length;
int[] sum = new int[n];
sum[0] = nums[0];
for (int i = 1; i < n; i++) {
sum[i] = nums[i] + sum[i - 1];
}
for (int i = 0; i < n; i++) {
int left = i - 1 < 0 ? 0 : sum[i - 1];
int right = sum[n - 1] - sum[i];
if (left == right) {
return i;
}
}
return -1;
}
}
2.3 测试结果
通过测试

3.总结
- 使用前缀和数组进行解答
- 注意左右边界时,和为 0
边栏推荐
猜你喜欢

首次在我们的centos上安装MySQL

商业模式及其 SubDAO 深入研究

C# rounding MidpointRounding.AwayFromZero

Experimental support for decorators may change in future releases.Set the "experimentalDecorators" option in "tsconfig" or "jsconfig" to remove this warning

color socks problem

Shader Graph学习各种特效案例

墨西哥大众VW Mexico常见的几种label

微透镜阵列的高级模拟

用于X射线光学器件的哈特曼波前传感器

Visual low-code system practice based on design draft identification
随机推荐
【web渗透】SSRF漏洞超详细讲解
【Grpc】简介
中文NER的SOTA:RICON
不是吧,连公司里的卷王写代码都复制粘贴,这合理?
以太网PHY芯片LAN8720A芯片研究
Initial attempt at UI traversal
C# 四舍五入 MidpointRounding.AwayFromZero
hint: Updates were rejected because the tip of your current branch is behind hint: its remote counte
【kali-密码攻击】(5.1.2)密码在线破解:Medusa
OOD论文:Revisit Overconfidence for OOD Detection
[Syntax sugar] About the mapping of category strings to category numeric ids
SonarQube升级记录:7.8->7.9->8.9
基于FTP协议实现文件上传与下载
Unity image使用长图后 图片很糊
分析 20 个 veToken 生态系统协议 这种代币模型为何受欢迎?
为什么字符串一旦创建就不可以改变?
【引用计数器及学习MRC的理由 Objective-C语言】
.Net面试经验总结
Unity开发者必备的编辑器技巧
《GB39732-2020》PDF下载