【LeetCode】RotateArray

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

Rotate ArrayRotate an array ofnelements to the right byksteps.

For example, withn= 7 andk= 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 thisPRoblem.

Credits:

Special thanks to@Freezenfor adding this problem and creating all test cases.

AC代码:(Python)

1classSolution:2#@param nums, a list of integer3#@param k, num of steps4#@return nothing, please modify the nums list in-place.5defrotate(self, nums, k):6n =len(nums)7k = k %n8nums[:] = nums[n-k:] + nums[:n-k]9

要注意一个问题:

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 ofoldnums, but the following one just changes its reference to anewnumsnot the value ofoldnums.

因为题目要求的是:

@return nothing, please modify the nums list in-place.

类似的还有:

1defpurify(lsst):2lst =lsst[:]3fornuminlsst:4ifnum % 2 == 1:5lst.remove(num)6returnlst

这是清除 list 中的奇数,要求不要在原输入上直接修改。

注意第二行不能 写成:

lst = lsst

而应该是:

lst = lsst[:]

这样才是值相同的两个list, 否则 lst = lsst 只是一个 list 的两个引用。

值 和 引用 的问题当属 Python 里的第一大坑。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航