Algorithm/문제풀이

[Leetcode] 922. Sort Array By Parity II 문제 풀이

bluespacedev 2021. 9. 28. 23:39

https://leetcode.com/problems/sort-array-by-parity-ii/

 

Sort Array By Parity II - LeetCode

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

 

문제 내용

i가 홀수이면 num[i] 도 홀수로,

i가 짝수이면 num[i] 도 짝수가 되도록 정렬하는 문제

 

Example 1:

Input: nums = [4,2,5,7]

Output: [4,5,2,7]

Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

 

문제 풀이

홀짝으로 index를 나눠서 swap하면 된다.

i를 짝수 인덱스

j를 홀수 인덱스 라고 하면

i가 홀수, j가 짝수인 지점을 찾아서 swap을 했다.

 

class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& nums) {
        int i = 0;
        int j = 1;
        
        while(1) {
            while(i < nums.size() && nums[i]%2 == 0) {
                i+=2;
            }
            if (i >= nums.size())
                break;
            while(j < nums.size() && nums[j]%2 == 1) {
                j+=2;
            }
            if (j >= nums.size())
                break;
            
            swap(nums[i], nums[j]);
            i+=2;
            j+=2;
        }
        
        return nums;
    }
};