原 leetcode python 27.移除元素
阿新 • • 發佈:2019-02-09
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
if len(nums) == 0:
return 0;
j=0
for i in range(0,len(nums)):
if nums[i] != val :
nums[j] = nums[i]
j = j + 1
return j
這個是真沒想到。。。。
自己寫的方法是,有點類似於快排partition操作,用兩個指標,前面遇到要刪除的元素時,將陣列尾部不被刪除的移到前面,直到i>j結束迴圈
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i= 0
j= len(nums)-1
count = 0
s = 0
while(1):
if(i>j):
break
if nums[i]==val:
count+=1
while(nums[j]==val and j>i):
count+=1
j=j-1
nums[i]=nums[j]
j=j-1
i+=1
else:
i+=1
return len(nums)-count