怎么做软文代发平台网站,衡水建设局网站首页,wordpress附件上传FTP,广州建筑集团有限公司科研成果LCR 012. 寻找数组的中心下标
给你一个整数数组 nums #xff0c;请计算数组的 中心下标 。
数组 中心下标 是数组的一个下标#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。
如果中心下标位于数组最左端#xff0c;那么左侧数之和视为 0 #xff0c;因为…LCR 012. 寻找数组的中心下标
给你一个整数数组 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 。 提示 1 nums.length 104 -1000 nums[i] 1000 题解 本题我们搭建好左到右前缀和数组和右到左前缀和数组后根据前缀和数组依次从左向右逐个试探每一个下标判断是否可形成中心下标即可 代码
class Solution {public int pivotIndex(int[] nums) {int leftSum[] new int[nums.length];int rightSum[] new int[nums.length];int sumL 0;int sumR 0;leftSum[0] nums[0]; for(int i1;inums.length;i){leftSum[i] leftSum[i-1] nums[i]; }rightSum[nums.length-1] nums[nums.length-1];for(int inums.length-2;i0;i--){rightSum[i] rightSum[i1] nums[i];}for(int i0;inums.length;i){if(leftSum[i] - nums[i] rightSum[i] - nums[i]){return i;}}return -1;}
}结果