LeetCode - 905. Sort Array By Parity

henu·2023년 10월 27일
0

LeetCode

목록 보기
123/186

Solution

var sortArrayByParity = function(nums) {

    for(let i=0, j=nums.length-1; i<j;) {

        if(!(nums[i] % 2)) {
            i++  
        }

        else if(nums[j] % 2) {
            j--
        }
        
        else if(nums[i] % 2 && !(nums[j] % 2)){
            [nums[i], nums[j]] = [nums[j], nums[i]]
            i++
            j--
        }
    }

    return nums
};

Explanation

문제가 요구하는 것은 간단하다.
짝수는 앞으로, 홀수는 뒤로 정렬하는 것이다.
위 조건만 만족하면 순서는 상관없다.
Two Pointers 방식으로 접근해서 해결했다.
1. i포인터는 앞에서부터, j포인터는 뒤에서부터 접근한다.
2. nums[i]가 짝수일 경우, 옮길 필요가 없으므로 i포인터를 +1만큼 옮긴다.
3. nums[j]가 홀수일 경우, 옮길 필요가 없으므로 j포인터를 -1만큼 옮긴다.
4. 포인터를 계속 옮기다가 nums[i]가 홀수고 nums[j]가 짝수일 경우, 구조 분해 할당을 이용해서 서로 바꿔준다.
위 과정을 i<j를 만족하는 한 계속 반복한다.

0개의 댓글