一枚菜鳥的leetcode刷題筆記 Day14

2021-10-17 15:53:24 字數 1500 閱讀 9233

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。

class

solution

:def

findkthlargest

(self, nums: list[

int]

, k:

int)

->

int:

nums.sort(

)#從小到大排列

return nums[

-k]

給定乙個整數陣列,判斷是否存在重複元素。

如果存在一值在陣列**現至少兩次,函式返回 true 。如果陣列中每個元素都不相同,則返回 false 。

class

solution

:def

containsduplicate

(self, nums: list[

int])-

>

bool

: nums.sort(

)for i in

range(1

,len

(nums)):

if nums[i]

== nums[i-1]

:return

true

return

false

先排序,再看有沒有相鄰數的相等即可。

給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k 個最小的元素。

說明:你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。

# definition for a binary tree node.

# class treenode:

# def __init__(self, val=0, left=none, right=none):

# self.val = val

# self.left = left

# self.right = right

class

solution

:def

kthsmallest

(self, root: treenode, k:

int)

->

int:

q =p = root

counter =

0while p or q:

while p:

p = p.left

p = q.pop(

) counter +=

1if counter == k:

return p.val

p = p.right

二叉搜尋樹是一種節點值之間具有一定數量級次序的二叉樹,對於樹中每個節點:

本解法實際上是用佇列寫dfs中的中序遍歷,需要注意的是入隊和出隊的順序。

一枚菜鳥的leetcode刷題筆記 Day5

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。class solution def merge2lists self,l1,l2 l1 and l2 are two linked lists head listnode rehead head ...

一枚菜鳥的leetcode刷題筆記 Day8

70 爬樓梯 78 子集 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?class solution def uniquepaths self,m...

一枚菜鳥的leetcode刷題筆記 Day11

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?class solution def singlenumber self,nums list int int tmp for n...