LeetCode Rotate Array

原创 2015年07月08日 20:22:18

Description:

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.

Solution:

有这么几种方法:

1. 重新new一个数组

2. 向右循环k次

3. 比较巧妙。将数组分为两个部分,前面n-k个和后面的k个,下标分别是[0, n-k-1]和[ n-k, n-1]。然后前后两个区间都分别倒置,最后再将整个区间倒置。

import java.util.*;

public class Solution {
	public void rotate(int[] nums, int k) {
		int n = nums.length;
		k = k % n;
		reverse(nums, 0, n - k - 1);
		reverse(nums, n - k, n - 1);
		reverse(nums, 0, n - 1);
	}

	void reverse(int[] nums, int start, int end) {
		int c;
		for (int i = start, j = end; i < j; i++, j--) {
			c = nums[i];
			nums[i] = nums[j];
			nums[j] = c;
		}
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[LeetCode]--189. Rotate Array

Rotate an array of n elements to the right by k steps.For example, with n = 7 and k = 3, the array [...

【LeetCode笔记】Rotate Array

写了两种方法 1. 用STL函数 void rotate(int num[], int n, int k){ k %= n; if(k == 0) return...

Rotate Array -- leetcode

Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the arr...

[LeetCode] Rotate Array

Rotate Array Rotate an array of n elements to the right by k steps. For example, with n = 7 and k...

Leetcode - Rotate Array

Rotate an array of n elements to the right by k steps.For example, with n = 7 and k = 3, the array [...

[LeetCode][189][Rotate Array]

首先,一点题外话。 这是大学学计算机到现在近6年来的时间,第一次认真刷题(PS:中间学习生涯有各种原因碰过两三道。。。)。 作为一个计算机专业出身的程序媴真的很不称职,本科以来,没写过几次代码,算法,...

[Leetcode]Rotate Array java(三种)

首先注意题目是向右移 Method 1.申明额外空间 一直移位 进行旋转 代码就不给了会超时 Method 2. 交换 (不论是运用递归交换还是公约数进行移动交换) 这里用递归,主要是把要旋转的进...

leetcode 189. Rotate Array

leetcode 189. Rotate Array 题目大意: Rotate an array of n elements to the right by k steps. 譬如说对于k=3,[1,...

Rotate Array---leetcode 我的java题解

原题连接 https://leetcode.com/problems/rotate-array/ Rotate an array of n elements to the right by k s...

[Leetcode][Rotate Array]一种对连续内存空间进行的循环移位的巧妙解法(O(1)的空间、O(n)的时间)

本文最初发表:http://03071344.lofter.com/post/10871e_2c4556 本文讨论如何对一段连续的内存空间(如int型数组、char型数组)的内容进行循环移动。例...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)