将包含 n 个元素的数组向右旋转 k 步。
例如,如果  n = 7 ,  k = 3,给定数组  [1,2,3,4,5,6,7]  ,向右旋转后的结果为 [5,6,7,1,2,3,4]。
注意:
尽可能找到更多的解决方案,这里最少有三种不同的方法解决这个问题。

详见:https://leetcode.com/problems/rotate-array/description/

Java实现:

方法一:

class Solution {
public void rotate(int[] nums, int k) {
int n=nums.length;
k%=n;
reverseArray(nums,0,n-1);
reverseArray(nums,0,k-1);
reverseArray(nums,k,n-1);
}
private void reverseArray(int[] nums,int start,int end){
while(start<end){
nums[start]=nums[start]+nums[end];
nums[end]=nums[start]-nums[end];
nums[start]=nums[start]-nums[end];
++start;
--end;
}
}
}

方法二:

class Solution {
public void rotate(int[] nums, int k) {
int n=nums.length;
int[] copy=Arrays.copyOf(nums,n);
for(int i=0;i<n;++i){
nums[(i+k)%n]=copy[i];
}
}
}

方法三:

class Solution {
public void rotate(int[] nums, int k) {
int n = nums.length;
int start = 0;
while (n != 0 && (k %= n) != 0) {
for (int i = 0; i < k; ++i) {
swap(nums, i + start, n - k + i + start);
}
n -= k;
start += k;
}
} private void swap(int[] nums, int i, int j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}

参考:https://www.cnblogs.com/grandyang/p/4298711.html

最新文章

  1. WebAPI接收JSON参数注意事项
  2. MVC其实很简单(Django框架)
  3. iOS tableviewcell 分割线 偏移和颜色
  4. dp重拾-01背包--HDU 2602
  5. Powershell查看SSAS Cube占用磁盘空间
  6. javascript中的删除方法
  7. ie下如果已经有缓存,load方法的效果就无法执行.的解决方法
  8. C#_拆箱跟装箱
  9. 将数字映射到字母上 .xml
  10. iOS图片的伪裁剪(改变图片的像素值)
  11. php总结 --- 19. 其他小知识
  12. 去除html页面中按钮在ios中的默认样式,去除select自带的小三角图标
  13. jQuery实现置顶和置底特效
  14. mac下 WebStorm下主题包安装
  15. LUN----逻辑单元号
  16. SQL server 2008无法连接Local服务器的解决办法
  17. javaweb学习路之三--websocket多人在线聊天
  18. Linux基础命令之总结一
  19. 编程岗位电话面试问答Top 50[转]
  20. Java中的守护线程

热门文章

  1. UNIX网络编程学习(9)--getsockname和getpeername的用法及实例(转)
  2. HTML5开发实战——Sencha Touch篇(1)
  3. 在CentOS上把Nginx从1.2.4升级到1.6.0
  4. mouseout和mouseover、mouseenter和mouseleave
  5. C#生成Excel文件后彻底解除占用代码(来着CSDN)
  6. 全局Timestamp管理器 检测js执行时间
  7. 同步 Github fork 分支
  8. [Usaco2009 MAR] Earthquake Damage 2
  9. Spring事物注意事项
  10. ACGAN 论文笔记