classSolution { public: intmaxSubArray(vector<int>& nums){ int cur = nums[0]; int ans = nums[0]; for(int i = 1; i < nums.size(); i++) { cur = max(nums[i], cur + nums[i]); ans = max(ans, cur); } return ans; } };
classSolution { public: voidrotate(vector<int>& nums, int k){ int n = nums.size(); k %= n; vector<int> res(n); for(int i = 0; i < n; i++) { res[(i + k) % n] = nums[i]; } nums = res; } };
解法2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
classSolution { public: voidreverse(vector<int>& nums, int l, int r){ while (l < r) { swap(nums[l++], nums[r--]); } } voidrotate(vector<int>& nums, int k){ int n = nums.size(); k %= n; reverse(nums, 0, n - 1); reverse(nums, 0, k - 1); reverse(nums, k, n - 1); } };