lintcode 中等题:kth-largest-element 第k大元素
2016-01-03 22:09
429 查看
题目
样例
给出数组[9,3,2,4,8],第三大的元素是4
给出数组 [1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推
注意
你可以交换数组中的元素的位置
挑战
要求时间复杂度为O(n),空间复杂度为O(1)
解题
理论快速排序的思想,每次都减半,这个时间复杂度也是O(N),至于为什么就不知道了
Python Code
第k大元素
在数组中找到第k大的元素样例
给出数组[9,3,2,4,8],第三大的元素是4
给出数组 [1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推
注意
你可以交换数组中的元素的位置
挑战
要求时间复杂度为O(n),空间复杂度为O(1)
解题
理论快速排序的思想,每次都减半,这个时间复杂度也是O(N),至于为什么就不知道了
class Solution: # @param k & A a integer and an array # @return ans a integer def kthLargestElement(self, k, A): return self.quickSort(A,0,len(A)-1,k) def quickSort(self,nums,left,right,k): i = left j = right tmp = nums[i] while i<j: while i<j and tmp>=nums[j]: j -= 1 if i<j: nums[i] = nums[j] i += 1 while i<j and tmp< nums[i]: i += 1 if i<j: nums[j] = nums[i] j -= 1 if i == k-1: return tmp elif i< k-1: return self.quickSort(nums,i+1,right,k) else: return self.quickSort(nums,left,i-1,k)
Python Code
相关文章推荐
- SQL Server:轻松解决令你头疼的sa登录
- convenient functions in numpy
- 大公司的IT项目化管理
- C#简单
- 线性表的顺序存储结构--顺序表
- 【下班后学js】判断传入的两个数组是否相似
- 1013 3的幂的和
- 仲恺acm 1003:A+B 输入输出练习IV【java】
- python第三方库推荐 - 通过ntplib在windows上同步时间
- 2015个人回顾
- USB
- 数据库学习小结
- GNU make简介
- 观后感《金粉世家》
- 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!
- Android 自定义seekbar【仿微信联系人】
- App研发录 架构设计 Crash分析和App竞品技术分析
- 【KMP算法详解——适合初学KMP算法的朋友】http://blog.sina.com.cn/s/blog_6cf48afb0100n561.html
- Jquery给HTML元素绑定按键事件-回车事件
- Mysql 导入excel文件 中文乱码