LeetCode - 905. Sort Array By Parity(Array, Two Pointers, Sort)

YAMAMAMO·2022년 2월 2일
0

LeetCode

목록 보기
11/100

문제

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

Given an integer array nums, move all the even integers at the beginning of the array followed by all the odd integers.
Return any array that satisfies this condition.

엣지번역
정수 배열을 감안할 때 배열의 시작 부분에 있는 모든 정수와 모든 홀수 정수를 이동합니다. nums
이 조건을 수납하는 배열을 반환합니다.

Example 1:

Input: nums = [3,1,2,4]
Output: [2,4,3,1]
Explanation: The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Example 2:

Input: nums = [0]
Output: [0]

풀이

자바입니다.

  • 스노우볼을 굴립니다.
  • 홀수를 찾아 snowBall을 더합니다.(모든 홀수를 찾는다)
  • snowBall 이 0보다 크면(홀수를 발견했다면) i의 값(현재배열)과 i-snowBall의 값(홀수배열)의 값을 변경한다.
class Solution {
    public int[] sortArrayByParity(int[] nums) {
        int snowBall = 0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]%2!=0){
                snowBall++;
            }else if(snowBall>0){
                int tmp = nums[i];
                nums[i]=nums[i-snowBall];
                nums[i-snowBall]=tmp;
            }
        }
        return nums;
    }
}

스노우볼에 관한 자세한 설명은 여기 있습니다.
https://leetcode.com/problems/move-zeroes/discuss/172432/THE-EASIEST-but-UNUSUAL-snowball-JAVA-solution-BEATS-100-(O(n))-%2B-clear-explanation

profile
안드로이드 개발자

0개의 댓글