27. 移除元素

 

 

 

代码一:

 1 class Solution(object):
 2     def removeElement(self, nums, val):
 3         """
 4         :type nums: List[int]
 5         :type val: int
 6         :rtype: int
 7         """
 8         if nums == []:
 9             return 0
10         i, j = 0, len(nums) - 1
11 
12         while i < j:
13             if nums[i] != val:
14                 i += 1
15             elif nums[j] == val:
16                 j -= 1
17             elif nums[i] == val:
18                 nums[i], nums[j] = nums[j], nums[i]
19                 i += 1
20                 j -= 1
21         # print(nums, i, j)
22         if nums[i] == val:
23             return len(nums[:i])
24         else:
25             return len(nums[:i])+1

代码二:

 1 class Solution(object):
 2     def removeElement(self, nums, val):
 3         """
 4         :type nums: List[int]
 5         :type val: int
 6         :rtype: int
 7         """
 8         if len(nums) == 0:
 9             return 0
10         # 双指针
11         i, j = 0, len(nums) - 1
12         while i < j:
13             # j指向的等于val,j前移
14             if nums[j] == val:
15                 j -= 1
16                 continue
17             # 如果i指向的等于val,交换i和j的值,j前移
18             if nums[i] == val:
19                 nums[i], nums[j] = nums[j], nums[i]
20                 j -= 1
21             # i每一趟都后移
22             i += 1
23         # print(nums, i, j)
24         if nums[i] == val:
25             return len(nums[:i])
26         else:
27             return len(nums[:i]) + 1

 

posted @ 2020-04-21 23:02  人间烟火地三鲜  阅读(72)  评论(0编辑  收藏  举报