题目连接:
https://leetcode-cn.com/problems/find-pivot-index/
题目大意:
找一个点,左边和右边相等。
具体思路:
前缀和+后缀和,线性遍历一遍即可。一定注意存在空数组的情况。
AC代码:
1 class Solution { 2 public: 3 int pivotIndex(vector<int>& nums) { 4 int sum_pre[10000+10]; 5 int sum_suf[10000+10]; 6 memset(sum_pre,0,sizeof(sum_pre)); 7 memset(sum_suf,0,sizeof(sum_suf)); 8 int len = nums.size(); 9 int ans = -1 ; 10 if(len){ 11 sum_pre[0] = nums[0] , sum_suf[len-1] = nums[len-1]; 12 13 for ( int i = 1 ; i< len ;i++ ){ 14 sum_pre[i] = sum_pre[i-1] + nums[i]; 15 } 16 for( int i = len-2 ;i >=0 ;i--){ 17 sum_suf[i] = sum_suf[i+1] + nums[i]; 18 } 19 for(int i = 0 ;i <len ;i++){ 20 if( i == 0 ){ 21 if(sum_suf[i+1] == 0 ){ 22 ans=i; 23 break; 24 } 25 } 26 else if(i == len-1){ 27 if(i - 1 >= 0 && sum_pre[i-1] == 0){ 28 ans=i; 29 break; 30 } 31 } 32 else{ 33 if(i + 1< len && i - 1 >= 0 && sum_pre[i-1] == sum_suf[i+1] ){ 34 ans=i; 35 break; 36 } 37 } 38 } 39 } 40 return ans; 41 } 42 };