LeetCode 0283. Move Zeroes Solution in Java, Python, C++, JavaScript, Go & Rust | Explanation + Code

CoderIndeed
0
0283. Move Zeroes

Description

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.

 

Example 1:

Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Example 2:

Input: nums = [0]
Output: [0]

 

Constraints:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

 

Follow up: Could you minimize the total number of operations done?

Solutions

Solution 1: Two Pointers

We use a pointer k to record the current position to insert, initially k = 0.

Then we iterate through the array nums, and each time we encounter a non-zero number, we swap it with nums[k] and increment k by 1.

This way, we can ensure that the first k elements of nums are non-zero, and their relative order is the same as in the original array.

The time complexity is O(n), where n is the length of the array nums. The space complexity is O(1).

PythonJavaC++GoTypeScriptRustJavaScriptC
class Solution: def moveZeroes(self, nums: List[int]) -> None: k = 0 for i, x in enumerate(nums): if x: nums[k], nums[i] = nums[i], nums[k] k += 1(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !