#189旋转数组
很快写出来但是用了个新数组,不好
void rotate(vector<int>& nums, int k) {
vector<int> res(nums.size(),0);
for(int i=0;i<nums.size();i++){
int newi=i+k;
if(newi>nums.size()-1) newi=newi%nums.size();
res[newi]=nums[i];
}
nums=res;
}
最好用原地的空间为O 1的做法: 好巧妙,翻转三次,其实和这些都好像的,我又给忘了
void rotate(vector<int>& nums, int k) {
k = k % nums.size();
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin() + k);
reverse(nums.begin() + k, nums.end());
}
#724寻找数组中心索引 easy
int pivotIndex(vector<int>& nums) {
int sum=accumulate(nums.begin(),nums.end(),0);
int sum1=0;
int sum2=0;
for(int i=0;i<nums.size();i++){
sum2=sum-sum1-nums[i];
if(sum1==sum2) return i;
sum1+=nums[i];
}
return -1;
}