283. Move Zeroes
Type: Easy
Liked by 15.2K
Disliked by 380.
Companies that asked this question
Companies: No of times asked
Yandex 8
Apple 3
Amazon 3
Facebook 11
Bloomberg 6
Google 4
Adobe 3
Microsoft 2
Uber 2
Oracle 2
Splunk 2
Tesla 2
tcs 6
Expedia 4
VMware 3
Goldman Sachs 3
ByteDance 3
JPMorgan 3
TikTok 3
LinkedIn 2
Yahoo 2
IBM 2
Morgan Stanley 2
ServiceNow 2
Salesforce 2
Zoho 2
Infosys 2
Nvidia 2
Samsung 2
Wix 1
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
Intuition
We want to move all the zeros
to the end of the array
while keeping the non-zero
elements in their relative order.
Approach
We maintain two pointers: i
to iterate through the array
and nonZeroIndex
to keep track of the position
where we should insert non-zero elements. When we encounter a non-zero element, we swap
it with the element at nonZeroIndex and then increment nonZeroIndex.
Complexity
Time complexity:
The code iterates through the array once, so the time complexity is O(n)
, where n
is the length of the array.
Space complexity:
The code uses a constant amount of extra space, so the space complexity is O(1)
.
Code
class Solution {
public void moveZeroes(int[] nums) {
int nonZeroIndex = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0) {
int temp = nums[i];
nums[i] = nums[nonZeroIndex];
nums[nonZeroIndex] = temp;
nonZeroIndex++;
}
}
}
}
Happy coding,
shiva
Top comments (0)