TOP k问题的nlogn代码框架,所有top k题目都适用,用的就是quick select叫快速选择,是快排的变种。 private int quickSort(int[] nums, int start, int end, int k) { if (start == end) { return nums[start]; } int pivot = nums[(start + end)/2]; int left = start; //左指针 int right = end; //右指针 while(left <= right) { while(left <= right && nums[left] < pivot) { left++; } while(left <= right && nums[right] > pivot) { right--; } if(left <= right) { int temp = nums[left]; nums[left] = nums[right]; nums[right] = temp; left++; right--; } } if(start + k - 1 <= right) { return quickSort(nums, start, right, k); } if(start + k - 1 >= left) { return quickSort(nums, left, end, k - left + start); } return nums[right + 1]; }
2 2

相关推荐

牛客网
牛客企业服务