当前位置:网站首页>[sword finger offer] sword finger offer II 012 The sum of left and right subarrays is equal

[sword finger offer] sword finger offer II 012 The sum of left and right subarrays is equal

2022-07-07 19:54:00 Jin huaixuan

Give you an array of integers  nums , Please calculate the of the array Center subscript .

Array Center subscript Is a subscript of the array , The sum of all elements on the left is equal to the sum of all elements on the right .

If the central subscript is at the leftmost end of the array , Then the sum of the numbers on the left is regarded as 0 , Because there is no element to the left of the subscript . This also applies to the fact that the central subscript is at the rightmost end of the array .

If the array has multiple central subscripts , Should return to Closest to the left The one of . If the array does not have a central subscript , return -1 .

Example 1:

Input :nums = [1,7,3,6,5,6]
Output :3
explain :
The central subscript is 3 .
The sum of the numbers on the left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
The sum of the numbers on the right sum = nums[4] + nums[5] = 5 + 6 = 11 , Two equal .
Example 2:

Input :nums = [1, 2, 3]
Output :-1
explain :
There is no central subscript in the array that satisfies this condition .
Example 3:

Input :nums = [2, 1, -1]
Output :0
explain :
The central subscript is 0 .
The sum of the numbers on the left sum = 0 ,( Subscript 0 There is no element on the left ),
The sum of the numbers on the right sum = nums[1] + nums[2] = 1 + -1 = 0 .


source : Power button (LeetCode)
link :https://leetcode.cn/problems/tvdfij
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source . 

Java:

class Solution {
    public Integer getArraysum(int[] arr){
        int total = 0;
        for(int i =0 ; i < arr.length;i++){
            total += arr[i];
        }
        return total;
    } 
    public int pivotIndex(int[] nums) {
        // Prefixes and ideas : Calculate the elements in the array and total, Traverse from left to right , The current element is num[i],  Determine whether the central subscript condition is :sum == total - num[i] - sum ;
        int total = getArraysum(nums);
        // Use sum Store left and 
        int sum = 0;
        // Use i The pointer begins to traverse 
        for(int i =0 ; i<nums.length ;i++){
            if(sum == (total - nums[i] - sum)){
                return i;
            }
            sum += nums[i];
        }
        return -1;

    }


}

原网站

版权声明
本文为[Jin huaixuan]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071736516035.html