Google Interview Question

Find kth largest element in array

Interview Answer

Anonymous

Jul 2, 2012

// return kth largest element in an array (not sorted) // this algorithm is effective if k see reversed solution), otherwise use sorting instead public static int kthElement (int[] a1, int k){ if (k > a1.length) return -1; boolean reversed = false; // if k> n/2, look for the (n-k+1)th smallest element instead if (k > a1.length /2) { k = a1.length - k +1; reversed = true; } List kthLargest = new LinkedList(); for (int i: a1) { if (kthLargest.size() i && reversed) { int j = 0; while (kthLargest.size() > j && (kthLargest.get(j) i && reversed)) { j++; } kthLargest.add(j, i); if (kthLargest.size() > k) kthLargest.remove(0); } } return kthLargest.get(0); }