leetcode(27) remove element 解法:

Given an array and a value, remove all instances of that value in-place and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. The order of elements can be changed. It doesn’t matter what you leave beyond the new length.

Example:

Given nums = [3,2,2,3], val = 3, Your function should return length = 2, with the first two elements of nums being 2.

解法:

此题与26题类似,同样两个指针,快指针用于遍历数组,慢指针用于覆盖指定值,当快指针的值和给定值不同,我们就把慢指针处的值用快指针的值覆盖,并将慢指针加1,快指针加1。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class :
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
if(len(nums) == 0):
return 0;
p = 0;
q = 0;
while(q<len(nums)):
if(nums[q] != val):
nums[p] = nums[q];
p+=1;
q+=1;
else:
q+=1;
return p;