深圳网站建设制作开发公司,软件技术的就业岗位,南京玄武网站建设,房地产网站怎么建设189. 轮转数组
提示
给定一个整数数组 nums#xff0c;将数组中的元素向右轮转 k 个位置#xff0c;其中 k 是非负数。 示例 1:
输入: nums [1,2,3,4,5,6,7], k 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转…189. 轮转数组
提示
给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 示例 1:
输入: nums [1,2,3,4,5,6,7], k 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:
输入nums [-1,-100,3,99], k 2
输出[3,99,-1,-100]
解释:
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100] 提示
1 nums.length 105-231 nums[i] 231 - 10 k 105
下面是我的答案
class Solution {
public:void rotate(vectorint nums, int k) {int lennums.size();vectorintnums1nums;if(k!0)for(int i0;ilen;i){nums[i]nums1[(i-klen*100)%len];}}
};
虽然可行但是开辟了新的内存空间。
来看看别人的代码
class Solution {
public:void reverse(vectorintnums,int start,int end){while(startend){swap(nums[start],nums[end]);start1;end-1;}}void rotate(vectorint nums, int k) {k%nums.size();reverse(nums,0,nums.size()-1);reverse(nums,0,k-1);reverse(nums,k,nums.size()-1);}
};
经过三次翻转能得到答案但是很难想得到。