码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 189 Rotate Array

时间:2015-05-04 22:10:52      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:leetcode   algorithm   

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.

思想:
1.—567旋转—765
2.—1234旋转—4321
3.—整体旋转4321765—5671234

解决方案:

void reverse(int left,int right,int *array)
{
    int temp = 0;
    while(left<right)
    {

        temp = array[left];
        array[left]= array[right];
        array[right] = temp;
        left++;
        right--;
    }
}

void rotate(int* nums, int numsSize, int k)
{
    k = k%numsSize;//不知道为何这里要加上这一句?
    reverse(0,numsSize-k-1,nums);
    reverse(numsSize-k,numsSize-1,nums);
    reverse(0,numsSize-1,nums);
}

技术分享

python解决方案:

class Solution:
# @param nums, a list of integer
# @param k, num of steps
# @return nothing, please modify the nums list in-place.
def rotate(self, nums, k):
    if not nums:
        return
    k%=len(nums)
    nums.reverse()
    self.reverse(nums,0,k-1)
    self.reverse(nums,k,len(nums)-1)


def reverse(self,nums,start,end):
    while start<end:
        nums[start],nums[end]=nums[end],nums[start]
        start+=1
        end-=1

leetcode 189 Rotate Array

标签:leetcode   algorithm   

原文地址:http://blog.csdn.net/wangyaninglm/article/details/45485491

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!