博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 189. Rotate Array (旋转数组)
阅读量:5301 次
发布时间:2019-06-14

本文共 1657 字,大约阅读时间需要 5 分钟。

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.

[show hint]

Hint:
Could you do it in-place with O(1) extra space?

Related problem: Reverse Words in a String II

 


题目标签:Array

  题目给了我们一个数组 和 k。 让我们 旋转数组 k 次。

  这里有一个很巧妙的方法:

    利用数组的length - k 把数组 分为两半;

    reverse 左边和右边的数组;

    reverse 总数组。

 

  举一个例子: 

  1 2 3 4 5 6 7  如果k = 3 的话, 会变成 5 6 7 1 2 3 4

  1 2 3 4 5 6 7  middle = 7 - 3 = 4,分为左边 4个数字,右边 3个数字

  4 3 2 1 7 6 5  分别把左右reverse 一下

  5 6 7 1 2 3 4  把总数组reverse 一下就会得到答案

 

 

Java Solution:

Runtime beats 15.37% 

完成日期:04/13/2017

关键词:Array

关键点:利用k把数组分两半;reverse左右两边数组;reverse总数组

 

1 public class Solution  2 { 3     public void rotate(int[] nums, int k)  4     { 5         if(nums == null || nums.length == 0 || k % nums.length == 0) 6             return; 7          8         int turns = k % nums.length; 9         int middle = nums.length - turns;10         11         reverse(nums, 0, middle-1); // reverse left part12         reverse(nums, middle, nums.length-1); // reverse right part13         reverse(nums, 0, nums.length-1); // reverse whole part 14     }15     16     public void reverse(int[] arr, int s, int e)17     {18         while(s < e)19         {20             int temp = arr[s];21             arr[s] = arr[e];22             arr[e] = temp;23             24             s++;25             e--;26         }27     }28 }

参考资料:

http://www.cnblogs.com/grandyang/p/4298711.html

 

LeetCode 算法题目列表 - 

 

转载于:https://www.cnblogs.com/jimmycheng/p/7476681.html

你可能感兴趣的文章
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>
全面分析Java的垃圾回收机制2
查看>>
[Code Festival 2017 qual A] C: Palindromic Matrix
查看>>
修改博客园css样式
查看>>
Python3 高阶函数
查看>>
初始面向对象
查看>>
docker一键安装
查看>>
leetcode Letter Combinations of a Phone Number
查看>>
Exercise 34: Accessing Elements Of Lists
查看>>
angular中的代码执行顺序和$scope.$digest();
查看>>
ALS算法 (面试准备)
查看>>
思达BI软件Style Intelligence实例教程—房地产分析
查看>>
Unity 3D 如何修改新建脚本中的 C# 默认创建的 Script 脚本格式
查看>>
让普通用户拥有
查看>>
Unity3D开发之NGUI点击事件穿透响应处理
查看>>
Unity 5.4 测试版本新特性---因吹丝停
查看>>
使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
查看>>
7.5 文件操作
查看>>
六、强大的 Stream API
查看>>