問題:
將包含 n 個元素的數(shù)組向右旋轉(zhuǎn) k 步。
例如,如果 n = 7 , k = 3,給定數(shù)組 [1,2,3,4,5,6,7] ,向右旋轉(zhuǎn)后的結(jié)果為 [5,6,7,1,2,3,4]。
提示:
要求空間復(fù)雜度為 O(1)。
關(guān)鍵詞:
空間復(fù)雜度O(1): 即只能在原有數(shù)組上改動,不能額外增加數(shù)組。
切片:切片的語法為[開始:結(jié)束:步長],要注意切片為左閉右開,即左邊為下標(biāo)的數(shù)開始到結(jié)束前一位數(shù)。
python中下標(biāo)的總結(jié):python數(shù)組和列表的下標(biāo)從0開始,因?yàn)檫@樣切片的表示更加美觀。
range()函數(shù)總結(jié):range()生成一個整數(shù)序列,下標(biāo)從0開始,例:range(5)生成0到4的整數(shù)。
代碼:
class Solution:
def rotate(self, 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
nums[:] = nums[n-k:] + nums[:n-k]