코딩쌀롱

[LeetCode_JS] 283. Move Zeroes _array 본문

개발공부

[LeetCode_JS] 283. Move Zeroes _array

이브✱ 2021. 7. 17. 01:38

알고리즘을 다시 처음부터 시작해보려고 한다.

코드스쿼드가 끝났으니 이제 모두 내가 알아서 해야한다!

처음부터 매일매일 쌓아가보자👊🏼

문제

Leetcode Move Zeroes 문제

- input: 정수 배열 nums

- output: 0이 아닌 정수는 순서 그대로, 0만 오른쪽으로 이동한 배열

- 주의! 배열 복사하지 말고 in-place로

풀이

76ms / 93.54%

var moveZeroes = function(nums) {
    let left = nums.indexOf(0);
    if(left === -1) return nums;
    let right = left;
    for(let i = left; i < nums.length; i++) {
        if(nums[right] === 0) right++;
        else {
            const value = nums[left]
            nums[left] = nums[right]
            nums[right] = value
            left++;
            right++;
        }
    }
    return nums;
};

인덱스를 가리키는 포인터를 left, right 두 개를 만든다.

left 포인터는 0을 가리키고, right 포인터는 0이 아닌 정수를 가리킨다.

left, right의 수를 서로 바꿔주면서 포인터 인덱스 바꿔주고 계속 진행.

 

코드없는 프로그래밍 영상을 봤어서 쉽게 풀 수 있었다.

 


참고📚

유튜브 - 코드없는 프로그래밍 moveZeroes

 

 

Comments