首页 > 编程语言 > 详细

lintcode python解法

时间:2019-03-04 10:11:30      阅读:218      评论:0      收藏:0      [点我收藏+]

5、第K大元素

在数组中找到第 k 大的元素。

挑战

要求时间复杂度为O(n),空间复杂度为O(1)。

 

最直接的想法是先对数组进行从大到小的排序,然后返回下标 k-1 的元素

 1 class Solution:
 2     """
 3     @param n: An integer
 4     @param nums: An array
 5     @return: the Kth largest element
 6     """
 7 
 8     def kthLargestElement(self, n, nums):
 9         if not nums or n > len(nums):
10             return None
11         return self.quicSort(nums, 0, len(nums)-1)[n-1]
12 
13     def quicSort(self, nums, start, end):
14         if start < end:
15             key_index = self.pation(nums, start, end)
16             self.quicSort(nums, start, key_index)
17             self.quicSort(nums, key_index+1, end)
18         return nums
19 
20     def pation(self, nums, start, end):
21         mark = nums[start]
22         while start < end:
23             while nums[end] <= mark and start < end:
24                 end -= 1
25             if start < end:
26                 nums[start] = nums[end]
27             while nums[start] > mark and start < end:
28                 start += 1
29             if start < end:
30                 nums[end] = nums[start]
31         nums[start] = mark
32         return start

 

 

 

 

lintcode python解法

原文:https://www.cnblogs.com/longchaos/p/10468913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!