rotate_array

#coding:utf-8
'''
Created on 2017-9-24

@author: 刘帅
'''
def rotate_new_list(nums,k):#新开一个数组
    t = []
    for i in range(len(nums)):
        #print i
        #print (i + k)%7
        t.insert((i + k)%7,(nums[i]))
    print t

def rotate_one_by_one(nums, k):
    """
    :type nums: List[int]
    :type k: int
    :rtype: void Do not return anything, modify nums in-place instead.
    """
    n = len(nums)
    for i in range(k):
        temp = nums[n-1]
        for j in range(n-1, 0, -1):
            nums[j] = nums[j-1]
        nums[0] = temp


#
# Reverse segments of the array, followed by the entire array
# T(n)- O(n)
#
def rotate(nums, k):
    """
    :type nums: List[int]
    :type k: int
    :rtype: void Do not return anything, modify nums in-place instead.
    """
    n = len(nums)
    k = k % n
    reverse(nums, 0, n - k - 1)
    reverse(nums, n - k, n - 1)
    reverse(nums, 0, n - 1)


def reverse(array, a, b):
    while a < b:
        array[a], array[b] = array[b], array[a]
        a += 1
        b -= 1

nums = [1,2,3,4,5,6,7]        
rotate_new_list(nums, 0)
rotate(nums, 0)
print nums
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值