leetcode-27 :数组中移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
比如:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
要求原地修改输入数组。
1 class Solution(object): 2 3 def removeElement(self,nums, val): 4 5 slow = -1 6 7 for i in range (0,len(nums)): 8 9 if nums[i] != val: 10 11 slow += 1 12 13 nums[slow] = nums[i] 14 15 return slow+1
因为要求是在原地修改输入数组,则不能申请一块新的list。若不要求原地修改输入数组,则可以用下面简单的方法解决问题。
方法:利用一个新的list,将不等于val的元素添加进去即可。
1 class Solution1(object): 2 3 def removeElement(self,nums,val): 4 5 result = [] 6 7 for i in range(1,len(nums)): 8 9 if nums[i] != val: 10 11 result.append(nums[i]) 12 13 return result,len(result)

浙公网安备 33010602011771号