LeetCode:旋转数组

C++示例程序:

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int length = nums.size();
        if (length <= 1 || k < 0)
            return;  
        k %= length;
        reverse(nums, 0, length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, length - 1);
    }
    
    void reverse(vector<int>& nums, int start, int end) {
        int temp = 0;
        for (int i = start, j = 0; i < start + (end - start + 1) / 2; i++, j++) {
            temp = nums[i];
            nums[i] = nums[end - j];
            nums[end - j] = temp;
        }
    }
};

猜你喜欢

转载自www.cnblogs.com/yiluyisha/p/9278508.html