189-旋转数组

时间:2020-03-15 10:13:27   收藏:0   阅读:63

旋转数组的大概意思就是:给定一个数组,将数组中的元素向右移动 个位置,其中 是非负数。

输入: [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]

采用的方法:三次反转

我们只需要将所有元素反转,然后反转前 k 个元素,再反转后面l-k个元素,就能得到想要的结果。

 技术分享图片

 

技术分享图片
 1 class Solution {
 2 public:
 3     void rotate(vector<int>& nums, int k) {
 4         int len=nums.size();
 5         reverse(nums.begin(),nums.end());
 6         reverse(nums.begin(),nums.begin()+k%len);
 7         reverse(nums.begin()+k%len,nums.end());
 8 
 9     }
10 };
View Code

 

原文:https://www.cnblogs.com/nxnslc-blog/p/12495502.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!