leetcode练习旋转数组

第一中方法即为hash的方法:

第二种采用了循环,但是不全面,输入测试用例为[1,3], k=3 时,无法进行交换:

class Solution {
public:
    void rotate(vector& nums, int k) {
        int len=nums.size();
        int round=1;
        if(k==0)
            return;
        for(;round<(len/k);round++)
        {
            for(int i=len-round*k; i=0;i--)
        {
            int index=i;
            for(int j=len-round*k;j

第三种,采用额外的数组

class Solution {
public:
    void rotate(vector& nums, int k) {
        std::map new_nums;
        int new_index=0;
        int len=nums.size();
        for(int i=0;i(new_index,nums[i]));
        }
        for(int i=0;i::iterator iter;
            iter = new_nums.find(i);
            nums[i]=iter->second;
        }  
    }
};

这个代码通过了测试,但是因为进行了两次循环且使用了额外的空间,显示结果为:

leetcode练习旋转数组_第1张图片

 

你可能感兴趣的:(C++基础)