邯郸市教育考试院网站,制作网站首先做的工作,乐陵森洁新能源有限公司电话,wordpress 点击 代码目录 1.题目描述
2.题解
分析
具体实现 1.题目描述
给你一个整数数组 nums #xff0c;请计算数组的 中心下标 。
数组 中心下标 是数组的一个下标#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。
如果中心下标位于数组最左端#xff0c;那么左侧数之和…目录 1.题目描述
2.题解
分析
具体实现 1.题目描述
给你一个整数数组 nums 请计算数组的 中心下标 。
数组 中心下标 是数组的一个下标其左侧所有元素相加的和等于右侧所有元素相加的和。
如果中心下标位于数组最左端那么左侧数之和视为 0 因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。
如果数组有多个中心下标应该返回 最靠近左边 的那一个。如果数组不存在中心下标返回 -1 。
示例 输入nums [1, 7, 3, 6, 5, 6] 输出3 中心下标mid 为3
中心下标左侧之和为 sum1 nums[0] nums[1] nums[2] 1 7 3 11
中心下标右侧之和为 sum2 nums[4] nums[5] 5 6 11 2.题解
分析
通过题目描述和给出的示例我们可以发现中心下标左侧数之和sum1与右侧数之和sum2相等且sum1 sum2 nums[mid] 数组所有元素之和total即 sum1*2 nums[mid] total
因此我们从左开始遍历数组当nums[i] sum1(左侧数之和)*2 total时i即为数组的中心下标
具体实现
class Solution {public int pivotIndex(int[] nums) {//计算数组所有元素之和int total 0;for (int i 0; i nums.length; i) {total nums[i];}//左侧数之和int sum 0;for (int i 0; i nums.length; i) {//当左侧数之和的2倍 nums[i]为数组所有元素之和时i为中心下标if(2*sum nums[i] total){return i;}else{//继续遍历数组sum nums[i];}}//未找到中心下标返回-1return -1;}
注题目出自力扣链接如下
724. 寻找数组的中心下标 - 力扣LeetCode