283. Move Zeroes

양갱·2025년 6월 30일

leetcode

목록 보기
13/14
post-thumbnail

Intuition

  1. 0을 만난다.
  2. 0을 뒤에 오는 애와 바꾼다.
  3. 0이 여러 개 연속해서 오는 경우
  4. 0의 개수만큼 인덱스를 교환한다
  5. 단, nums.length를 신경쓴다.

Approach

뒤에 오는 값들을 앞으로 모두 보낸 후, 맨 뒤를 0의 개수만큼 0으로 마스킹한다.

Complexity

  • Time complexity:O(n)

  • Space complexity: O(1)

Code

class Solution {
    public void moveZeroes(int[] nums) {
        int count = 0;
        // int buff = 0;
        for (int i = 0; i < nums.length; i++){
            if (nums[i] != 0){
                nums[i-count] = nums[i];
            }else if (nums[i] == 0){   
                count++;
            }
        }
        for (int i = 0; i < count; i++){
            nums[nums.length - i - 1] = 0;
        }
    }
}
profile
일기장처럼 기록하는 용도

0개의 댓글