C/C++教程

leetcode189.轮转数组

本文主要是介绍leetcode189.轮转数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我用的方法是新开一个数组来保存,然后再用assign函数复制到原函数中,注意该函数void类型的,所以不能直接返回新函数。

更好的方法:

先将整个数组左右翻转,然后根据k分别反转左右两部分,用双指针进行swap

class Solution {
public:
    void reverse(vector<int>& nums, int start, int end) {
        while (start < end) {
            swap(nums[start], nums[end]);
            start += 1;
            end -= 1;
        }
    }
    void rotate(vector<int>& nums, int k) {
        k %= nums.size();
        reverse(nums, 0, nums.size() - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, nums.size() - 1);
    }
};

 

这篇关于leetcode189.轮转数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!