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)

 

posted @ 2020-06-03 09:16  Robin-Sun  阅读(181)  评论(0)    收藏  举报