0元素的移动问题

题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

解题思路:定义两个指针,如果前面那个指针所指的为0,就交换两个数的位置。 解法1:
  ```
    class Solution:
      def moveZeroes(self, nums: List[int]) -> None:
          """
          Do not return anything, modify nums in-place instead.
          """
          start=0
          for i in range(len(nums)):
              if(nums[i]!=0):
                  nums[start]=nums[i]
                  start+=1
          for j in range(start,len(nums)):
              nums[j]=0
  ```

解法2:

  ```
  class Solution:
      def moveZeroes(self, nums: List[int]) -> None:
          n = len(nums)
          left = right = 0
          while right < n:
              if nums[right] != 0:
                  nums[left], nums[right] = nums[right], nums[left]
                  left += 1
              right += 1
  ```
posted @ 2021-10-22 10:21  一蓑烟雨任平生生  阅读(93)  评论(0)    收藏  举报