Issue
I am trying to find the Kth largest element in an array.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
class Solution {
public int findKthLargest(int[] nums, int k) {
//List<Integer> list = Arrays.asList(nums);
List<Integer> list = IntStream.of(nums).boxed().collect(Collectors.toList());
int max = nums[0];
for(int x = 1; x<=k; x++){
for(int y = 1; y<list.size(); y++){
int temp;
if (nums[y] > max) {
max = nums[y];
temp = max;
}
}
list.removeIf(value -> value.equals(temp.valueOf()));
}
return max;
}
}
I am hit with the error:
Line 20: error: cannot find symbol
list.removeIf(value -> value.equals(temp.valueOf()));
^
symbol: variable temp
location: class Solution
And if I move int temp in between the two for loop statements, I get this error.
Line 21: error: int cannot be dereferenced
list.removeIf(value -> value.equals(temp.valueOf()));
^
Solution
If the task is just to find the K-th largest element, nothing should be removed from the list/array.
Just sort the array and return the k-th value counting from the end:
public static int findKthLargest(int[] nums, int k) {
assert(k > 0 && k < nums.length); // make sure k is valid
Arrays.sort(nums);
return nums[nums.length - k];
}
Answered By – Nowhere Man
Answer Checked By – Willingham (BugsFixing Volunteer)