劍指offer40 最小的k個數

2021-10-03 01:17:15 字數 1096 閱讀 4882

問題描述:

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。

#方法1:o(nlogn)

def getleastnumbers(input,k):

# input.sort()

# return input[:4]

a=sorted(input)

input=[4,5,1,6,2,7,3,8]

getleastnumbers(input,4)

#方法2:o(nlogn)借助堆的思想,

#如果容易已有的數字小於k個,則直接把這次讀入的整數放入容器中,容器滿後,此時找出k中最大值,如果新加入的數》最大值,拋棄新加入的數字,如果

#新加入的數《最大值,則替換最大值。

def getleastnumbers(input,k):

n=len(input)

if k<0 or k>n:

return

res=

for num in input:

if len(res)=mid:

high-=1

li[low]=li[high]

while lown:

return

start =0

end=n-1

index=partition(input,start,end)

while k-1 != index:

if index >k-1:

end=index-1

index=partition(input,start,end)

else:

start=index+1

index =partition(input,start,end)

return input[:index+1]

input=[4,5,1,6,2,7,3,8]

getleastnumbers(input,4)

劍指offer》【最小的k個數】(python版)

這篇部落格先建乙個大頂堆,後面再研究

劍指offer40 最小的k個數

輸入n個整數,找出其中最小的k個數。注意 資料保證k一定小於等於輸入陣列的長度 輸出陣列內元素請按從小到大順序排序 樣例 輸入 1,2,3,4,5,6,7,8 k 4 輸出 1,2,3,4 思路1 用大頂堆儲存k個數,然後不斷的遍歷陣列,若是陣列中的數小於堆頂元素,則替換。實踐複雜度為o nlogk...

劍指offer40 最小的 K 個數

題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,思路 方法一 維護乙個大小為k的大頂堆,複雜度 o nlogk o k 特別適合處理海量資料 public class solution priorityqueuemax...

劍指 Offer 40 最小的k個數

輸入整數陣列 arr 找出其中最小的 k 個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。示例 1 輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 示例 2 輸入 arr 0,1,2,1 k 1 輸出 0 限制 0 k arr.length ...