티스토리 뷰
Problem
Given an integer array nums and an integer k, return the kth largest element in the array.
Note that it is the kth largest element in the sorted order, not the kth distinct element.
Example 1:
Input: nums = [3,2,1,5,6,4], k = 2
Output: 5
Example 2:
Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
Output: 4
Constraints:
- 1 <= k <= nums.length <= 10^4
- -10^4 <= nums[i] <= 10^4
Solution
정수 배열과 정수 k가 주어질 때, 배열 내에서 k번째로 큰 원소를 반환하는 문제입니다.
이 문제는 어이없게도(?)
import java.util.Arrays;
public class Solution {
public int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length - k];
}
}
이렇게도 풀립니다.
하지만 문제가 의도하는 건 이런 방식의 풀이가 아니겠죠?
우선순위 큐를 이용하면 간단히 해결할 수 있습니다.
import java.util.PriorityQueue;
public class Solution {
public int findKthLargest(int[] nums, int k) {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
for (int num : nums) {
priorityQueue.offer(num);
}
while (priorityQueue.size() > k) {
priorityQueue.poll();
}
if (priorityQueue.isEmpty()) {
throw new IllegalStateException();
}
return priorityQueue.poll();
}
}
Test
package io.lcalmsky.leetcode.kth_largest_element_in_an_array;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class SolutionTest {
@Test
public void givenNumbers_whenFindKthNumber_thenCorrect() {
assertAll(
() -> test(new int[]{3, 2, 1, 5, 6, 4}, 2, 5),
() -> test(new int[]{3, 2, 3, 1, 2, 4, 5, 5, 6}, 4, 4)
);
}
private void test(int[] nums, int k, int expected) {
// when
Solution kthLargestElementInAnArray = new Solution();
int actual = kthLargestElementInAnArray.findKthLargest(nums, k);
// then
assertEquals(expected, actual);
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
462. Minimum Moves to Equal Array Elements II (0) | 2022.07.02 |
---|---|
406. Queue Reconstruction by Height (0) | 2022.07.01 |
120. Triangle (0) | 2022.06.18 |
167. Two Sum II - Input Array Is Sorted (0) | 2022.06.17 |
1342. Number of Steps to Reduce a Number to Zero (0) | 2022.06.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- @ManyToOne
- spring boot application
- intellij
- 함께 자라기
- gRPC
- Jackson
- 스프링 부트 애플리케이션
- Spring Data JPA
- 스프링 부트
- 스프링 데이터 jpa
- Spring Boot JPA
- QueryDSL
- 헥사고날 아키텍처
- Spring Boot
- 클린 아키텍처
- spring boot jwt
- JPA
- Spring Boot Tutorial
- 함께 자라기 후기
- 스프링부트
- proto3
- r
- Linux
- JSON
- 알고리즘
- 스프링 부트 회원 가입
- Java
- 스프링 부트 튜토리얼
- spring boot app
- leetcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함