코딩테스트

283. Move Zeroes

nayoon 2024. 2. 17. 15:19

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

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

별도의 array 만들기 없이 in-place로 만드는 것이 조건

 

 

44ms

class Solution {
    public void moveZeroes(int[] nums) {
        for(int i = 0; i < nums.length; i++) {
            if (nums[i] == 0) {
                int index = i;
                while(++index < nums.length) {
                    if (nums[index] != 0) {
                        nums[i] = nums[index];
                        nums[index] = 0;
                        break;
                    }
                }
            }
        }
    }
}

 

정직한 풀이(바보같이..)라고 해야할까요..

배열 요소가 0이면 0이 아닌 요소가 있는 index를 찾아서 대체하고 해당 index의 값은 0으로 만들도록 했음

 

가장 빠른 풀이를 보니 0이 아닌 요소를 배열 앞으로 가지고 온 후 나머지를 0으로 채운다.

 

2ms

class Solution {
    public void moveZeroes(int[] nums) {
        int index = 0;
        for(int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[index++] = nums[i];
            }
        }

        for(int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
}

 

 

'코딩테스트' 카테고리의 다른 글

75. Sort Colors  (0) 2024.02.18
268. Missing Number  (0) 2024.02.17
100. Same Tree  (0) 2024.02.17
409. Longest Palindrome  (0) 2024.02.17
9. Palindrome Number  (0) 2024.02.16