728x90
https://leetcode.com/problems/kth-largest-element-in-an-array/
이 문제는 그냥 k번쨰로 큰 원소를 배열에서 찾아서 반환하면 된다
근데 신경 쓸 제약 조건이라면 시간 복잡도를 O(n)으로 맞춰야한다는 정도?
그렇다는건 이중루프를 쓰면 안된다는 말이겠지?
사실 풀이가 너무 간단해서 약간 당황함
그냥 Arrays.sort 메소드 사용했어
주의할 점은 저 메소드로 정렬할 때 내림차순 하려면 파라미터로 Collections.reverseOrder()를 주면 되거든?
근데 이거 쓰려면 배열의 타입이 Object여야해
int 처럼 원시 타입이면 오류가 나더라구
그래서 Integer 배열로 바꾸는 로직 추가하고, 내림차순 정렬해서 k-1번째 인덱스 반환했어! (0부터 시작하니깐)
간단하지?ㅎㅎ
자바 코드)
public class leet215 {
public int findKthLargest(int[] nums, int k) {
Integer[] arr = new Integer[nums.length];
for(int i=0;i<nums.length;i++) {
arr[i] = nums[i];
}
Arrays.sort(arr, Collections.reverseOrder());
return arr[k-1];
}
@Test
public void test() {
Assert.assertEquals(5, findKthLargest(new int[]{3,2,1,5,6,4}, 2));
Assert.assertEquals(4, findKthLargest(new int[]{3,2,3,1,2,4,5,5,6}, 4));
}
}
아웅 테스트코드 너무 좋당!!
왜 이걸 이제 했지~!~!
jUnit 최고야~~><
728x90
'코딩테스트' 카테고리의 다른 글
[알고리즘] 다익스트라 알고리즘 (0) | 2022.08.01 |
---|---|
[리트코드] 79. Word Search - JAVA (0) | 2022.07.11 |
[리트코드] 162. Find Peak Element (0) | 2022.06.20 |
[리트코드] 38. Count and Say - JAVA (0) | 2022.06.07 |
[리트코드] 1222번 - JAVA (0) | 2022.05.31 |
댓글