
class Solution(object):
def removeElement(self, nums, val):
if len(nums) == 0 :
return 0
is_tihan = 0
for i in range(len(nums)):
if nums[i] != val:
nums[i], nums[is_tihan] = nums[is_tihan], nums[i]
is_tihan = is_tihan + 1
return is_tihan
在他的网站上找了一下,看有没有更简单的方式,还真找到了,这边有两种不同的解决方式,第一种代码比较多一点:
class Solution(object):
def removeElement(self, nums, val):
nums.sort()
n = len(nums)
if n == 0:
return 0
l, r = 0, n - 1
mid, count = 0, 0
while l < r:
mid = (l + r) // 2
if val > nums[mid]:
l = mid + 1
else:
r = mid
if nums[mid] != val:
mid = r
if nums[mid] != val:
return n
for i in range(mid, n):
if nums[i] == val:
count += 1
continue
break
for j in range(mid, n - count):
nums[j] = nums[j + count]
return n - count
还有一种方式,巧妙的使用了list的特性:
class Solution(object):
def removeElement(self, nums, val):
while val in nums:
nums.remove(val)
return len(nums)
是不是感觉很简单,Python的魅力就在这里。