免费提交网址的网站,页游小游戏,采购系统erp软件,wordpress魔改题目描述
给定一个整数数组 nums#xff0c;将数组中的元素向右轮转 k 个位置#xff0c;其中 k 是非负数。 出处
思路
好像是某一年的考研题#xff0c;原地逆序后k项#xff0c;再逆序前n-k项#xff0c;再逆序整个数组即可。空间复杂度O(1)#xff0c;时间复杂度O(…题目描述
给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 出处
思路
好像是某一年的考研题原地逆序后k项再逆序前n-k项再逆序整个数组即可。空间复杂度O(1)时间复杂度O(n)。要注意k可能比n大需要对n取余。
代码
class Solution {
private:void reverse(vectorint nums, int left, int right){int t;while (leftright){tnums[left];nums[left]nums[right];nums[right]t;left;right--;}}
public:void rotate(vectorint nums, int k) {int nnums.size();kk%nums.size();if(kn)return;reverse(nums, n-k, n-1);reverse(nums, 0, n-k-1);reverse(nums, 0, n-1);}
};