[LeetCode] Kth Largest Element in an Array (找出数组的第k大的元素)
来源:互联网 发布:建筑设计模型制作软件 编辑:程序博客网 时间:2024/05/17 03:19
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
方法一:
一看这题,可能第一个想到的就是使用排序算法,但是如果使用排序算法,再找出nums[nums.size()-k]的元素,那么复杂度将会是O(NlogN),如果在数据比较小的情况下可能是能过,但这题很显然不会让你两行代码(sort,returnnums[nums.size()-k])结束该题,所以肯定会超时的
方法二:
使用二分法,可以使复杂度降低到O(N),类似于快排,但我们并不需要进行排序。首先取序列中的首元素p,把该序列中比p小的元素放在左边,比p大的元素放在右边.然后根据更新后p在序列中的位置,可以推出第k大的元素在左边还是右边。若在左边,则进行同样的操作,在右边也进行同样的操作。直到p的位置刚刚好在第k大的位置,此时就可返回p,即为答案。
复杂度分析:
每次操作都要进行n次比较,这里的n的序列长度。假设每次取到的元素恰好在中间位置,则每次序列长度减半。所以总共最多需要比较n+n/2+n/4+.....1=n(1+1/2+1/4+....(1/2)^k)≤2n,所以复杂度为O(N)
- [LeetCode] Kth Largest Element in an Array (找出数组的第k大的元素)
- Leetcode 215 Kth Largest Element in an Array 数组中第k大的元素
- 数组-Kth Largest Element in an Array(找出第K大的数)
- 【LeetCode】215. Kth Largest Element in an Array找第K大的元素
- LeetCode OJ 之 Kth Largest Element in an Array(数组中的第k大元素)
- 第二周:215. Kth Largest Element in an Array(找出第K大的数)
- 【Top K 问题】[Leetcode-215] Kth Largest Element in an Array 数组中第K大的数
- LeetCode 二分查找第K大的数215. Kth Largest Element in an Array
- Kth Largest Element in an Array 数组中的第K大的数
- 215. Kth Largest Element in an Array(数组中第k大的数字)
- LeetCode 215. Kth Largest Element in an Array(第K大元素)
- Kth Largest Element in an Array(数组中第K大元素)
- 215. Kth Largest Element in an Array(数组中第k大元素)
- leetcode解题之215. Kth Largest Element in an Array java 版(第k大的数字)
- 【LeetCode-面试算法经典-Java实现】【215-Kth Largest Element in an Array(数组中第K大的数)】
- leetcode215---Kth Largest Element in an Array(第k大元素)
- leetcode 215:Kth Largest Element in an Array ( 分治-求第k小的数,第k大的数)
- 字符串算法——查找数组第K个最大值( Kth Largest Element in an Array)
- html中元素定位
- 简单实现hibernate-validator拓展
- android的Tab实现布局
- Android中Scroller类的了解
- jquery简易轮播图
- [LeetCode] Kth Largest Element in an Array (找出数组的第k大的元素)
- 数组中c出现次数超过一半的数字
- scala进阶31-使用for做查询
- 进程的诞生与死亡的整个过程
- 为什么构造函数不能是虚函数
- C++语法入门 - 持续更新
- Java基础知识 第一章 mySql配置 (一)
- 获取当天的开始和结束时间
- OpenCV实战笔记(2):格式转化