Rotate Array(C++旋转数组)

解题思路:

记得对k取模,借助辅助vector

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        vector<int > b;
        k = k%nums.size();
        int dis = nums.size()-k,j=0,tag=0;
        for (int i=0;i<nums.size();i++) {
        	j = i+dis;	
        	if (j>=nums.size()) {
        		tag = i;
        		while(i<nums.size() && i<dis) {
        			b.push_back(nums[i]);
        			i++;
				}
				break;
			} else {
				if (i<dis) {
					b.push_back(nums[i]);
				}
				nums[i]=nums[j];
			}
        }
        for (int i=0;i<b.size();i++) {
            nums[i+tag]=b[i];
        }
        
    }
};
发布了264 篇原创文章 · 获赞 272 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/coolsunxu/article/details/105506059