728x90
반응형
https://leetcode.com/problems/kth-largest-element-in-an-array/submissions/
1. 리스트 이용
2. 배열 이용
3. PriorityQueue 이용
import java.util.*;
class Solution {
public int findKthLargest(int[] nums, int k) {
List<int[]> list = Arrays.asList(nums);
Collections.sort(list, Collections.reverseOrder());
return list.get(k-1);
}
}
-> Int[] -> Integer[] -> list
import java.util.*;
class Solution {
public int findKthLargest(int[] nums, int k) {
Integer[] arr = Arrays.stream(nums).boxed().toArray(Integer[]::new);
List<Integer> list = Arrays.asList(arr);
Collections.sort(list, Collections.reverseOrder());
return list.get(k-1);
}
}
import java.util.*;
class Solution {
public int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length-k];
}
}
배열을 하나씩 넣으면서, 큐의 사이즈가 K번째 값보다 커지면 모두 뺀다 -> 오름차순 정렬
-> pq의 사이즈가 2일 때, 맨 위에 존재하는 요소 -> 2번째 큰 값이 된다.
import java.util.*;
class Solution {
public int findKthLargest(int[] nums, int k) {
//1
Queue<Integer> pq = new PriorityQueue<>();
//2
for(int i: nums) {
pq.offer(i);
if(pq.size() >k) {
pq.poll();
}
}
return pq.peek();
}
}
class Solution {
public int findKthLargest(int[] nums, int k) {
Queue<Integer> q = new PriorityQueue<>(Collections.reverseOrder());
for(int x:nums){
q.offer(x);
}
while(!q.isEmpty()){
k--;
if(k==0) return q.poll();
q.poll();
}
return 0;
}
}
728x90
반응형
'Java > Java 알고리즘 LeetCode' 카테고리의 다른 글
[LeetCode- Ch.2 정렬 & 검색] 4. 미팅룸 (+ 2차원 배열 정렬) (0) | 2022.10.28 |
---|---|
[LeetCode- Ch.2 정렬 & 검색] 3. 원점에 가장 가까운 지점 ## (+ Double 정렬, PriorityQueue 정렬) (0) | 2022.10.28 |
[LeetCode- Ch.2 정렬 & 검색] 1. 제로 이동 (+ allMatch, noneMatch, for-while) (0) | 2022.10.28 |
[LeetCode- Ch.1 문자열] 4. 플러스 원 (0) | 2022.10.28 |
[LeetCode- Ch.1 문자열] 3. 라이센스 키 포맷 (+ StringBuilder.insert(위치,문자)) (0) | 2022.10.28 |