Я пытался решить Kth наибольший элемент в массиве
Это мой код:
public static int findKthLargest(int[] nums, int k) {
Queue<Integer> q = new LinkedList<>();
int max = Integer.MIN_VALUE;
for(int i=0; i< nums.length; i++){
if(nums[i]>=max){
max = nums[i];
if(q.size() <k)
q.add(max);
else{
q.poll();
q.add(max);
}
}
}
return q.peek();
}
Основная идея моего кода заключается в том, что ясохраняйте максимальные значения в очереди длины K, и после того, как я переберу все значения в массиве, я возвращаю первый Item, так как это максимальный элемент Kth.
Но он не работает в следующем тестовом примере: Input: Array = [2, 1] K = 2 - Ожидаемый результат: 1 - Мой вывод: 2
Я просто не понимаю, как 1 должен быть вторым по величине элементом вмассив? Пожалуйста, поправьте меня, если я что-то испорчу.