Easy-题目65:189. Rotate Array

原创 2016年05月30日 22:42:43

题目原文:
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].
题目大意:
给一个数组,循环右移k位。
题目分析:
这题好像也是考研408复习资料里面出现过的一道题,(还是笔试原题?我忘了)。如果不给出答案我也是想不到的。用三步翻转实现:
(1) 先翻转前n-k位;
(2) 再翻转后k位;
(3) 再从头到尾翻转。
但本题中k有可能大于数组长度n,这种情况下相当于循环移动了n%k次(剩下的因为是整除的,相当于循环移动了n的整数倍,等于没移)
源码:(language:c)

void rotate(int* nums, int numsSize, int k) {
    if(k>=numsSize)
        k=k%numsSize;
    reverse(nums,numsSize-k);
    reverse(nums+numsSize-k,k);
    reverse(nums,numsSize);
}
void reverse(int* a,int n)
{       
    int i,t;
    for(i=0;i<n/2;i++) {
        t=*(a+i);
        *(a+i)=*(a+n-i-1);
        *(a+n-i-1)=t;
    }
}

成绩:
8ms,beats 9.23%,众数8ms,90.77%

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

相关文章推荐

[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][189][Rotate Array]

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

leetcode 189. Rotate Array

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

[leetcode]189. Rotate Array

题目链接:189. Rotate Array Rotate an array of n elements to the right by k steps. For example, with n ...

【LeetCode】189 Rotate Array 小侃小解

个人第一道开始喽~ 上题! Rotate an array of n elements to the right by k steps. For example, with n = 7...

LeetCode笔记:189. Rotate Array

旋转数组元素

<LeetCode OJ> 189. Rotate Array

189. Rotate Array My Submissions Question Total Accepted: 55073 Total Submissions: 278176 Diffic...

[LeetCode OJ] 189. Rotate Array--C++实现

[LeetCode OJ] 189. Rotate Array--C++实现

LeetCode题解:189. Rotate Array

题目链接:189. Rotate Array题目描述: Rotate an array of n elements to the right by k steps. For example,...
  • yums467
  • yums467
  • 2017年01月07日 21:52
  • 244

[LeetCode]189. Rotate Array

189. Rotate Array Rotate an array of n elements to the right by k steps. For example, with n = 7 a...
  • Johnkui
  • Johnkui
  • 2016年04月16日 21:30
  • 263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easy-题目65:189. Rotate Array
举报原因:
原因补充:

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