題目描述:
輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。
解題方案:
python內建函式sorted()採用快排進行排序,之後輸出前k個數:
# -*- coding:utf-8 -*-
class solution:
def getleastnumbers_solution(self, tinput, k):
# write code here
if k > len(tinput):
return
return sorted(tinput)[:k]
另一種思路是採用堆資料結構,並從堆中輸出k次,其中使用heapq模組實現。
堆的第乙個元素是最小值,pop之後再對堆進行更新。
import heapq
heap = # creates an empty heap
item = heap[0] # smallest item on the heap without popping it
heapify(x) # transforms list into a heap, in-place, in linear time
item = heapreplace(heap, item) # pops and returns smallest item, and adds
# new item; the heap size is unchanged
# -*- coding:utf-8 -*-
import heapq
class solution:
def getleastnumbers_solution(self, tinput, k):
if not tinput or not k or k > len(tinput):
return
heapq.heapify(tinput)
牛客網 最小的k個數
輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,解法1 利用最大堆,o nlogk vectorgetleastnumbers solution vectorinput,int k vectorheap input input....
牛客網 樹的子結構 解題報告 python
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解題方案 採用遞迴方法,原函式不太好遞迴,重寫遞迴函式。coding utf 8 class treenode def init self,x self.val x self.left none sel...
牛客網 浙江大學 排名 解題報告
今天的上機考試雖然有實時的ranklist,但上面的排名只是根據完成的題數排序,沒有考慮每題的分值,所以並不是最後的排名。給定錄取分數線,請你寫程式找出最後通過分數線的考生,並將他們的成績按降序列印。測試輸入包含若干場考試的資訊。每場考試資訊的第1行給出考生人數n 0 n 1000 考題數m 0 m...