题目:

Rotate an array of n elements to the right by k steps.

For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

思路:

  • 题意:要求对给定长度的整形数组n进行平移,给定k,就平移3个位置(循环)
  • 要求是在o(1)的空间,不能考虑数组的复制了,根据算法,这个平移转化为逆序。reverse(nums,0,n-k-1),reverse(nums,n-k,n-1),reverse(nums,0,n-1)等价,写一个reverse的函数。

代码:

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

最新文章

  1. 【Paddy】如何将物理表分割成动态数据表与静态数据表
  2. G:数字三角形
  3. tomcat 9.0配置管理员用户名和密码
  4. 解决phpMyAdmin“登录超时 (1440 秒未活动),请重新登录”的问题
  5. RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
  6. Java程序编译和运行的过程【转】
  7. JAVASCRIPT的一些知识点梳理
  8. enum,struct,union类型使用和长度
  9. jQuery 源码解析一:jQuery 类库整体架构设计解析
  10. 会话技术之Cookie 和 Session
  11. spring3.1的BeanFactory与Quartz1.8整合
  12. winform中获取Properties窗口的值.
  13. Mono For Android 实现索引分段器效果
  14. mysql innodb init function error
  15. C#模板打印excel
  16. jQuery的基本操作
  17. spring suite tool 添加namespace时只有bean一个
  18. Windows 8 禁用强制驱动签名
  19. 如何安装和配置RabbitMQ(转载)
  20. 如何上传Packages到PyPI并批量抓取

热门文章

  1. GDAL库三个读取Jpeg2000格式驱动测试
  2. React Native自动化测试
  3. UNIX网络编程——设置套接字超时
  4. CONFIGURE ADFS 3.0 WITH SHAREPOINT 2013
  5. 《java入门第一季》之TreeSet存储自定义对象并保证排序和唯一
  6. 【一天一道LeetCode】#112. Path Sum
  7. 我眼中的Linux设备树(一 概述)
  8. 安卓手机与ROS通信遥控Gazebo中仿真机器人小车运动(ROS_indigo)
  9. Ext JS 6正式版的GPL版本下载地址
  10. 11.1、Libgdx的音频之音效