輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。
用partition求出第k小的數,這個數的左邊就是最小的k個數。
本來是這樣的。
可是,執行沒通過!!!!!!!!!!!!
超時??
先記錄下來吧。
# -*- coding:utf-8 -*-
class
solution:
defgetleastnumbers_solution
(self, tinput, k):
# write code here
res =
if k >= len(tinput):
return res
start = 0
end = len(tinput) - 1
index = self.partition(tinput, start, end)
while index != k - 1:
if index > k - 1:
end = index - 1
index = self.partition(tinput, start, end)
elif index < k - 1:
start = index + 1
index = self.partition(tinput, start, end)
for i in range(0, k):
return sorted(res)
defpartition
(self, tinput, start, end):
key = tinput[start]
s = start
e = end
while s < e:
while tinput[e] >= key and s < e:
e -= 1
while tinput[s] <= key and s < e:
s += 1
if s < e:
tinput[s], tinput[e] = tinput[e], tinput[s]
tinput[start], tinput[s] = tinput[s], tinput[start]
return s
簡單的ac**:
# -*- coding:utf-8 -*-
class
solution:
defgetleastnumbers_solution
(self, tinput, k):
# write code here
res =
if k > len(tinput):
return res
s = sorted(tinput)
for i in range(k):
return res
劍指offer 30 最小的k個數
題目 給出乙個陣列,輸出最小的k個數 解法1 類似於快排的方式,找到index,知道index等於k時,前面的k個數就是最小的數 public class main 5 public static void getmaxnum int input,int k else for int i 0 i i...
劍指offer 最小k個數
1.題目 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,2.方法 1 基於堆排序演算法,構建最大堆。時間複雜度為o nlogk 2 如果用快速排序,時間複雜度為o nlogn 3 如果用插入排序,時間複雜度為o n 2 3.演...
劍指offer 最小的K個數
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 4 題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,解析 基於插入排序的思想可以想到使用乙個長度為k的排序陣列儲存最小的k個元素,複雜度o nk 基於...