티스토리 뷰
Problem
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.
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]
Constraints:
- 1 <= nums.length <= 5000
- 0 <= nums[i] <= 5000
Solution
정수 배열이 주어지면 모든 짝수를 앞으로 이동시키는 문제입니다.
package io.lcalmsky.leetcode.sort_array_by_parity;
public class Solution {
public int[] sortArrayByParity(int[] nums) {
int left = 0, right = nums.length - 1;
while (left < right) { // (1)
if (nums[left] % 2 > nums[right] % 2) { // (2)
swap(nums, left, right);
}
if (nums[left] % 2 == 0) { // (3)
left++;
}
if (nums[right] % 2 == 1) { // (4)
right--;
}
}
return nums;
}
private void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
- 배열의 양 끝에 두 개의 포인터를 이동시키면서
- 앞쪽이 홀수인 경우 두 개를 swap 합니다.
- swap 후에 앞쪽이 짝수인 경우 포인터를 이동시킵니다.
- swap 후에 뒷쪽이 홀수인 경우 포인터를 이동시킵니다.
Test
package io.lcalmsky.leetcode.sort_array_by_parity;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import org.junit.jupiter.api.Test;
class SolutionTest {
@Test
void testAll() {
assertAll(
() -> test(new int[]{3, 1, 2, 4}, new int[]{4, 2, 1, 3}),
() -> test(new int[]{0}, new int[]{0})
);
}
private void test(int[] given, int[] expected) {
// when
Solution solution = new Solution();
int[] actual = solution.sortArrayByParity(given);
// then
assertArrayEquals(expected, actual);
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
1091. Shortest Path in Binary Matrix (0) | 2022.05.23 |
---|---|
743. Network Delay Time (0) | 2022.05.21 |
1209. Remove All Adjacent Duplicates in String II (0) | 2022.05.19 |
216. Combination Sum III (0) | 2022.05.17 |
17. Letter Combinations of a Phone Number (0) | 2022.05.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- 헥사고날 아키텍처
- 스프링 데이터 jpa
- Linux
- gRPC
- Spring Data JPA
- 클린 아키텍처
- 스프링부트
- Jackson
- Spring Boot Tutorial
- Java
- 스프링 부트
- 함께 자라기 후기
- spring boot app
- QueryDSL
- spring boot application
- leetcode
- 스프링 부트 튜토리얼
- r
- Spring Boot
- 스프링 부트 회원 가입
- intellij
- 함께 자라기
- JSON
- JPA
- @ManyToOne
- spring boot jwt
- Spring Boot JPA
- proto3
- 스프링 부트 애플리케이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함