1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     int pivotIndex(vector<int>& nums) 
12     {
13         int sz=nums.size();
14         if(sz==0)
15             return -1;
16         int sum=accumulate(nums.begin(),nums.end(),0);
17         int leftsum=0;
18         for(int res=0;res<sz;res++)
19         {
20             if(leftsum*2+nums[res]==sum)
21                 return res;
22             leftsum+=nums[res];
23         }
24         return -1;
25     }
26 };
思路:先对整个数组进行求和,得到总数sum。然后从头开始遍历数组,并对遍历过的元素进行累加得到一个x,
      如果x值乘以2 + 当前位置的值等于sum,则说明当前位置是pivot
也可以求和之后,左加右减,判定左右相等,但是这种方法在指针跑到数组两端时要注意一下。
posted on 2018-06-11 10:58  高数考了59  阅读(134)  评论(0)    收藏  举报