前面提交的主要出现两个问题:
1:题目意思没弄对,在函数里面print是不对的,原意是通过函数调用修改穿进去的列表参数
2:由于传进去的列表是可变数据类型,因此要想修改传进去的参数列表,不能重新创建一个列表对象,而应该对列表元素进行修改,显然下面之前的方法是错误的
class Solution: # @param nums, a list of integer # @param k, num of steps # @return nothing, please modify the nums list in-place. def rotate(self, nums, k): length = len(nums) k = k % length if k > 0 and length > 1: nums = nums[(length - k):] + nums[:(length - k)]
由于前面两个for循环虽然能达到目的,但是runtime性能太差,因此还是在切片基础上对列表元素进行修改,既然两个切片合成的列表实际上就是nums的结果,但是不能重新创建一个列表对象被变量num指向了,因此可以定义一个中间列表array来指向切片之和这个对象,然后遍历切片之和这个列表,元素按顺序一一赋给nums对应的元素即可,这样就一层for循环,时间复杂度o(n)
class Solution: # @param nums, a list of integer # @param k, num of steps # @return nothing, please modify the nums list in-place. def rotate(self, nums, k): length = len(nums) k = k % length if k > 0 and length > 1: array = nums[(length - k):] + nums[:(length - k)] for x in range(length): nums[x] = array[x]
再次提交,终于成功被接受了~!!!
33 / 33 test cases passed. Status: Accepted Runtime: 91 ms Submitted: 14 minutes ago