27. Remove Element
给定一个数组nums和一个val值,在nums中就地移除该val的所有并返回新的长度。 不要为其他数组分配额外空间,必须通过在O(1)额外内存中就地修改输入数组来实现此目的。
元素的顺序可以改变。
在nums新的长度以后留下的数字并没有关系。 比如长度为2,则nums[2]及以后的并不重要
JAVA 15ms
class Solution {
public int removeElement(int[] nums, int val) {
int count = 0;
for(int i = 0 ; i< nums.length; i++){
if(val != nums[i]){
nums[count++] = nums[i];
}
}
return count;
}
}
Python 38ms
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
count = 0
for i in range(len(nums)):
if (val != nums[i]):
nums[count] = nums[i]
count += 1
return count
另一种python更快解法,直接利用list 的del特性
注:list del是根据索引位置来删除元素
比如
a = [3,2,2,1]
del a[1,3]
print a
结果[3]
a[::-1]用法:翻转list
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
for i in range(len(nums))[::-1]: # a[::-1]翻转,即i为倒序
if nums[i] == val:
del nums[i]
网友评论