Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 625 Bytes

File metadata and controls

32 lines (27 loc) · 625 Bytes
  • 这就是 std::rotate 的功能,它可以交换两个区间范围内的元素
class Solution {
 public:
  void rotate(vector<int>& nums, int k) {
    std::rotate(rbegin(nums), rbegin(nums) + k % size(nums), rend(nums));
  }
};
  • 原理是三次翻转
1234 567 => 目标 567 1234
765 4321
567 1234
  • 实现如下
class Solution {
 public:
  void rotate(vector<int>& nums, int k) {
    k %= size(nums);
    reverse(begin(nums), end(nums));
    reverse(begin(nums), begin(nums) + k);
    reverse(begin(nums) + k, end(nums));
  }
};