Leetcode 283 Move Zeroes

Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements.

Note that you must do this in-place without making a copy of the array.

Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]
Input: nums = [0]
Output: [0]
  • Soruda bize içinde sıfırlar olan bir liste veriliyor ve bu sıfırları listenin sonuna taşımamız isteniyor.
  • Bu soruyu iki işaretçi kullanarak çözebiliriz.
  • İki işaretçideki sayıları karşılaştırarak ilerleriz ve 0 ile sayının yerini değiştiririz.
  • Sıfır ile yer değiştirdiğimizde 0 da olan indeksi 1 arttırırız.
class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        slow = 0
        for fast in range(len(nums)):
            if nums[fast] != 0 and nums[slow] == 0:
                nums[slow], nums[fast] = nums[fast], nums[slow]

            # wait while we find a non-zero element to
            # swap with you
            if nums[slow] != 0:
                slow += 1