牛客網 最小的k個數 解題報告 python

2021-10-02 16:28:04 字數 1056 閱讀 6643

題目描述:

輸入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...