【Leetcode】Rotate Array
来源:互联网 发布:linux漏洞公布 编辑:程序博客网 时间:2024/06/08 02:51
题目链接:https://leetcode.com/problems/rotate-array/
题目:
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.
Hint:
Could you do it in-place with O(1) extra space?
Could you do it in-place with O(1) extra space?
思路:
1、用另一个数组保存,空间复杂度为O(n),时间复杂度为O(n)
2、两边逆序,整个数组逆序。空间复杂度O(1),时间复杂度O(n)
3、数组平移,往右移动一个将覆盖的元素赋给最左开始的元素。空间复杂度为O(1),时间复杂度为O(n)
算法1:
public void rotate(int[] nums, int k) {if (k > nums.length) {k = k % nums.length;}int tmp[] = (int[]) nums.clone();for (int i = 0; i < k; i++) {nums[i] = tmp[tmp.length - k + i];}for (int i = 0; i < (tmp.length - k); i++) {nums[k + i] = tmp[i];}}
public void rotate(int[] nums, int k) {k = k % nums.length;nums = reverse(nums, 0, nums.length-k-1);nums = reverse(nums, nums.length-k,nums.length-1);nums = reverse(nums, 0, nums.length-1);}public int [] reverse(int[] arr, int left, int right){if(arr == null || arr.length == 1) return arr;for(int i=0;i<(right-left+1)/2;i++){int tmp = arr[left+i];arr[left+i] = arr[right-i];arr[right-i] = tmp;}return arr;}
0 0
- [leetcode][array] Rotate Array
- LeetCode[Array]: Rotate Image
- LeetCode:Rotate Array
- [LeetCode] Rotate Array
- *LeetCode-Rotate Array
- [LeetCode]189.Rotate Array
- Rotate Array - LeetCode - Java
- Rotate Array--Leetcode(Java)
- Leetcode--Rotate Array
- LeetCode: Rotate Array
- LeetCode Rotate Array
- Rotate Array(leetcode)
- leetcode Rotate Array
- Leetcode: Rotate Array
- [Leetcode]11 Rotate Array
- [LeetCode][189][Rotate Array]
- Leetcode:Rotate Array
- LeetCode: Rotate Array
- 利用Adaboost和LBP特征进行人脸检测
- 装饰器模式之java IO流
- Java中的String、StringBuilder以及StringBuffer(转载)
- 71. MVC 改进
- html5 - 基础格式认识和标签用法(文本元素常用方法)
- 【Leetcode】Rotate Array
- servlet复习(一)Servlet API
- CodeForces 586E Alice, Bob, Oranges and Apples 水题
- javascript新建对象及基本数据类型
- 超实用的jQuery代码段 - jQuery实现Animate动画
- 求字符串的最长无重复字符子串(C++)
- iOS调试常见错误汇总 如:symbol(s) not found for architecture x86_64
- Delete Node in a Linked List
- 13、Roman to Integer