第k大的元素
来源:互联网 发布:ubuntu 命令行界面 编辑:程序博客网 时间:2024/04/30 16:00
析:借助快速排序的思想
import java.util.Scanner;public class Main4 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String numStr=sc.nextLine(); String[] nums = numStr.split(" "); int[] arr = new int[nums.length]; for (int i = 0; i < nums.length; i++) { arr[i]= Integer.valueOf(nums[i]); } int k=sc.nextInt(); System.out.println(kthLargestElement(k,arr)); } public static int kthLargestElement(int k, int[] nums) { if(null == nums ||k <= 0 || nums.length < k) return Integer.MIN_VALUE; kthMax(nums, 0, nums.length-1, k); return nums[k-1]; } // 快速排序的近似写法 public static void kthMax(int[] nums, int left, int right, int k) { int mid = partition(nums, left, right); if(mid == k-1) return; if(mid > k-1) kthMax(nums, left, mid-1, k); else kthMax(nums, mid+1, right, k); } public static int partition(int[] nums, int left, int right) { int temp = nums[left]; while(left < right) { while(left < right && nums[right] <= temp) right--; nums[left] = nums[right]; while(left < right && nums[left] > temp) left++; nums[right] = nums[left]; } nums[left] = temp; return left; }}
阅读全文
0 0
- 第k大的元素
- 第k大元素
- 第k大元素
- 第k大元素
- 查找--第K大的元素
- 查找第K大的元素
- 查找第 k 大的元素
- 数组中第K大的元素
- STL求第k大的元素
- 求两个排序数组的第K大元素--求全排列的第K大元素
- LintCode 第K大元素
- LintCode-第k大元素
- LintCode_第k大元素
- 【LintCode】第k大元素
- 查找第K大元素
- 寻找第k小的元素或者第k大的元素 -- O(n)
- 两个排序的数组,找到第k大的元素
- 两个有序数组的第k大的元素
- 在linux下使用socket通信,accept调用产生accept error:Invalid argument
- Win10怎么看cpu的温度?cpu的温度高低查看方法
- 8.26打架被批判一番还是要学习一个
- Android自定义view
- -Java-泛型
- 第k大的元素
- Latex中PDF裁剪工具pdfcrop的使用
- 使用version参数解决Oracle数据泵版本差异
- 写一个功能函数实现从数组中找出两个值相加等于某一个值,要求时间复杂度为 n;
- scala 函数柯里化
- 二叉树两个节点求最近的公共祖先节点java代码实现
- mac文件夹权限的@
- mov eax,dword ptr fs:[0] 指令
- 数据泵导入导出详细介绍