P2.2 CyclicRotation
Rotate an array to the right by a given number of steps.
-
P2.2 旋轉(zhuǎn)
數(shù)組旋轉(zhuǎn)給定次數(shù)
由N個整數(shù)組成的數(shù)組A邻邮。數(shù)組的一次旋轉(zhuǎn)就是每個元素均向右移動一個位置,數(shù)組的最后一個元素移動到第一個位置。
例如慌盯,數(shù)組A=[3峭火,8横辆,9梢睛,7层皱,6],經(jīng)過1次的循環(huán)旋轉(zhuǎn)就為[6缕棵,3孵班,8,9招驴,7]篙程,經(jīng)過2次的循環(huán)旋轉(zhuǎn)就變?yōu)閇7, 6, 3, 8, 9]。
編寫函數(shù):
def solution(A, K)
給定一個由N個整數(shù)組成的數(shù)組A和一個整數(shù)K别厘,則返回一個旋轉(zhuǎn)K次的數(shù)組虱饿。
例如,給定A=[3触趴、8氮发、9、7雕蔽、6]折柠,K=3,函數(shù)應(yīng)返回[9批狐、7扇售、6、3嚣艇、8]承冰。
三次旋轉(zhuǎn)如下:
[3,8食零,9困乒,7,6]->[6贰谣,3娜搂,8迁霎,9,7]
[6百宇,3考廉,8,9携御,7]->[7昌粤,6,3啄刹,8涮坐,9]
[7,6誓军,3袱讹,8,9]->[9谭企,7廓译,6,3债查,8]
例如非区,給出A=[0, 0, 0],K=1盹廷,函數(shù)應(yīng)返回[0征绸,0,0]俄占;
給出A=[1管怠,2,3缸榄,4]渤弛,K=4,函數(shù)應(yīng)返回[1甚带、2她肯、3、4]鹰贵。
假定:
- N和K是范圍0至100內(nèi)的整數(shù)晴氨;
- 數(shù)組A的每個元素都是[-1000,1000]內(nèi)的整數(shù)碉输;
- 主要考察正確性籽前,算法的性能不是重點;
- 解題思路
計算每個元素移動后的索引值,對于一個長度為N的數(shù)組枝哄,只要KmodN的值相同肄梨,結(jié)果就是一樣的。
- Python3代碼
# -*- coding:utf-8 -*-
# &Author AnFany
# Lesson 2:Arrays
# P 2.2 CyclicRotation
def solution(A, K):
"""
返回數(shù)組A經(jīng)過K次旋轉(zhuǎn)后的數(shù)組
:param A: 數(shù)組
:param K: 旋轉(zhuǎn)次數(shù)
:return: 旋轉(zhuǎn)后的數(shù)組
"""
length = len(A)
new_list = A.copy()
if K == 0 or length == K or length == 0:
return new_list
else:
times = K % length
for index, value in enumerate(A):
new_list[(times + index) - length] = value
return new_list
- 結(jié)果
點擊獲得更多編程練習題膘格。歡迎Follow桶癣,感謝Star!!! 掃描關(guān)注微信公眾號pythonfan患雇,獲取更多味廊。