【剑指offer】面试题30:最小的K个数
2014-07-07 00:37
357 查看
import random def partition(data, start, end): if end <= start: return start index = random.randint(start, end) guard = data[index] while True: while data[start] < guard: start += 1 while data[end] > guard: end -= 1 if start >= end: break data[start], data[end] = data[end], data[start] return start def getKMins(data, k): if len( data ) <= k: return data start = 0; end = len( data ) - 1 index = partition(data, start, end) while index != k - 1: if index > k - 1: index = partition(data, start, index - 1) else: index = partition(data, index + 1, end) return data[ 0 : k]
相关文章推荐
- 【剑指offer】5.2时间效率——面试题30:最小的k个数
- 【剑指Offer学习】【面试题30:最小的k个数】
- 剑指offer 面试题30:最小的K个数(topK问题) 题解
- 剑指offer:面试题30,求最小的K个数
- 剑指Offer面试题30(java版):最小的k个数
- 剑指Offer_面试题30_最小的k个数
- 【面试题】剑指Offer-30-最小的第K个数
- 剑指offer-面试题30-最小的k个数
- 剑指offer面试题30:最小的k个数
- 剑指offer-----面试题30(最小的k个数)
- 剑指Offer:面试题30 最小的k个数
- 【剑指Offer】面试题30:最小的k个数
- 剑指Offer----面试题30:最小的K个数
- 剑指offer——面试题30:最小的k个数
- 剑指Offer面试题30(java版):最小的k个数
- 剑指offer 面试题30—最小的k个数
- 【剑指offer】面试题30:最小的 K 个数
- 剑指offer面试题30:最小的K个数
- [剑指offer][面试题30]最小的k个数
- 剑指Offer面试题30最小的K个数(涉及堆或快排)