Leetcode - 283. Move Zeroes

숲사람·2022년 6월 14일
0

멘타트 훈련

목록 보기
59/237

주어진 배열에서 0인요소를 가장 우측으로 옮겨라. (0을 제외한 수들의 순서가 유지되어야한다)

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

https://leetcode.com/problems/move-zeroes/

해결 1 - O(n)

void moveZeroes(int* nums, int numsSize){
    int retcnt = 0;
    for (int i = 0; i < numsSize; i++)
        if (nums[i])
            nums[retcnt++] = nums[i];
    for (int i = retcnt; i < numsSize; i++)
        nums[i] = 0;
}

해결 2 - O(n)

void moveZeroes(int* nums, int numsSize){
    int nz_cnt = 0;
    int temp = 0;
    
    for (int cur = 0; cur < numsSize; cur++) {
        if (nums[cur]) {
            temp = nums[cur];
            nums[cur] = nums[nz_cnt];
            nums[nz_cnt++] = temp;
        }
    }
}
profile
기록 & 정리 아카이브용

0개의 댓글