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.
Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.
AC代碼:(Python)
1 class Solution:2 # @param nums, a list of integer3 # @param k, num of steps4 # @return nothing, please modify the nums list in-place.5 def rotate(self, nums, k):6 n = len(nums)7 k = k % n8 nums[:] = nums[n-k:] + nums[:n-k]9
要注意一個(gè)問(wèn)題:
A little important thing to be cautious:
nums[:] = nums[n-k:] + nums[:n-k] can't be written as:
nums = nums[n-k:] + nums[:n-k]on the OJ.
The previous one can truly change the value of old nums, but the following one just changes its reference to a new nums not the value of old nums.
因?yàn)轭}目要求的是:
@return nothing, please modify the nums list in-place.
類似的還有:
1 def purify(lsst):2 lst = lsst[:]3 for num in lsst:4 if num % 2 == 1:5 lst.remove(num)6 return lst
這是清除 list 中的奇數(shù),要求不要在原輸入上直接修改。
注意第二行不能 寫(xiě)成:
lst = lsst
而應(yīng)該是:
lst = lsst[:]
這樣才是值相同的兩個(gè)list, 否則 lst = lsst 只是一個(gè) list 的兩個(gè)引用。
值 和 引用 的問(wèn)題當(dāng)屬 Python 里的第一大坑。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注