diff --git "a/14_\345\210\267\351\242\230/problem_solving_03.py" "b/14_\345\210\267\351\242\230/problem_solving_03.py" index 5dc2b1280e27f915af5a28722b5d0339f524453e..2445a9cf22318bebbc87d0eb603d01ab2cbd5bff 100644 --- "a/14_\345\210\267\351\242\230/problem_solving_03.py" +++ "b/14_\345\210\267\351\242\230/problem_solving_03.py" @@ -6,6 +6,12 @@ from typing import List class Solution: def removeElement(self, nums: List[int], val: int) -> int: + """ + 左指针 单指针遍历 + :param nums: + :param val: + :return: + """ left = 0 for index in range(0, len(nums)): if nums[index] != val: @@ -13,7 +19,24 @@ class Solution: left += 1 return left + def removeElement2(self, nums: List[int], val: int) -> int: + """ + 双指针优化,左右夹逼 + :param nums: + :param val: + :return: + """ + left = 0 + right = len(nums) + while left < right: + if nums[left] == val: + nums[left] = nums[right - 1] + right -= 1 + else: + left += 1 + return left + if __name__ == '__main__': - result = Solution().removeElement([2], 3) + result = Solution().removeElement2([2], 3) print(result)