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
發佈了79 篇原創文章 · 獲贊 23 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章