在未排序的陣列中找到第 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...