🎲 문제
283. Move Zeroes
Easy
정수 배열 nums가 주어지면 0이 아닌 요소의 상대적인 순서를 유지하면서 모든 0을 끝으로 이동합니다.
배열의 복사본을 만들지 않고 이 작업을 제자리에서 수행해야 합니다.
더보기
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?
💡 접근 방법
- 배열의 요소중 0은 오른쪽으로, 나머지 요소들은 순서대로 정렬해야 하기 때문에, for loof의 i와 idx라는 변수를 선언하여 두 가지 인덱스 포인터로 배열을 정렬할 것이다
- for loof들 돌면서 i번째 인덱스가 0이 아닐경우 -> nums[idx]에 num[i]로 바꿔준다
- idx와 i가 같지않으면 num[i]에 0을 할당한다
- idx 카운트를 증가하여 배열을 반복한다
var moveZeroes = function (nums) {
let idx = 0;
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== 0) {
nums[idx] = nums[i];
if (idx !== i) nums[i] = 0;
idx++;
}
}
};
📖 후기
새로운 배열을 만들어서 해결하기보다 "idx"로 포인터로 새 요소를 처리하는 작업을 수행하면, 공간복잡성 O(1)으로 해결할 수 있다.
공간복잡성: O(1)
시간복잡성: O(n)
'DS & Algo > 풀이모음' 카테고리의 다른 글
[leetcode/JS] 292_Nim Game 풀이 (0) | 2022.11.28 |
---|---|
[leetcode/JS] 232_Implement Queue using Stacks 풀이 (0) | 2022.11.20 |
[leetcode/JS] 122_Best Time to Buy and Sell Stock II 풀이 (0) | 2022.11.16 |
[leetcode/JS] 744_Find Smallest Letter Greater Than Target 풀이 (0) | 2022.11.16 |
[leetcode/JS] 278_First Vad Version 풀이 (0) | 2022.11.16 |
댓글