217 存在重複元素
230 二叉樹搜尋樹中最小的元素
本篇為datawhale組隊學習計畫第21期leetcode精選題目組task14學習筆記。
初學,時間有點倉促,很多解法沒有詳細分析,未來可能會修改,見諒。
datawhale學習文件:
在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例
輸入: [3,2,1,5,6,4] 和 k = 2輸出: 5
輸入: [3,2,3,1,2,4,5,5,6] 和 k = 4說明:輸出: 4
你可以假設 k 總是有效的,且 1 ≤ k ≤ 陣列的長度。排序。注意的是找到第 k 個最大的元素(參考示例2)。
(看了好幾篇題解,再看學習文件的**……只能說做題追求的不同吧)
(學習文件,直接sort()一波)
class
solution
:def
findkthlargest
(self, nums: list[
int]
, k:
int)
->
int:
nums.sort(
)return nums[
len(nums)
- k]
給定乙個整數陣列,判斷是否存在重複元素。示例:如果存在一值在陣列**現至少兩次,函式返回 true 。如果陣列中每個元素都不相同,則返回 false 。
輸入: [1,2,3,1]輸出: true
輸入: [1,2,3,4]輸出: false
輸入: [1,1,1,3,3,4,3,2,4,2]這裡有一位寫了15種陣列驗重方法。輸出: true
比較好寫的是排序(或者sort(),重複的就會相鄰)、去重(利用set(),比較陣列長度)、雜湊表。
去重:利用set()的性質,比較陣列長度
class
solution
:def
containsduplicate
(self, nums: list[
int])-
>
bool
:return
len(nums)
!=len
(set
(nums)
)# set() 函式:建立乙個無序不重複元素集
給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k 個最小的元素。說明:
你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。示例 1:
輸入: root = [3,1,4,null,2], k = 1示例 2:3/ \
1 4\
2輸出: 1
輸入: root = [5,3,6,2,4,null,null,1], k = 35/高階:3 6/ \
2 4/
1輸出: 3
如果二叉搜尋樹經常被修改(插入/刪除操作)並且你需要頻繁地查詢第 k 小的值,你將如何優化 kthsmallest 函式?參考:官方題解
遍歷二叉樹的方法之前稍微提過。
不同的遍歷策略:
1.遞迴
通過構造 bst 的中序遍歷序列,則第 k-1 個元素就是第 k 小的元素2.迭代
在棧的幫助下,可以將方法一的遞迴轉換為迭代,這樣可以加快速度,因為這樣可以不用遍歷整個樹,可以在找到答案後停止。(快樂遞迴~)
class
solution
:def
kthsmallest
(self, root, k)
:"""
:type root: treenode
:type k: int
:rtype: int
"""definorder
(r):
return inorder(r.left)
+[r.val]
+ inorder(r.right)
if r else
return inorder(root)
[k -
1]
TLP Task01學習筆記
004 尋找兩個正序陣列的中位數 005 最長回文子串 本篇為datawhale組隊學習計畫第21期leetcode精選題目組task01學習筆記。初學,時間有點倉促,很多解法沒有詳細分析,未來會修改,見諒。給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它...
Perl 學習筆記 14
system是呼叫shell的最簡單的方法。例如 system ls l home system date exec是 呼叫後不用管 的system。使用 env獲得環境變數。例如 env home rootbeer bin env path delete env my make result sy...
Python學習筆記 14
本節主要有 tips 如果不想改變原資料,傳遞引數時盡量用其副本 函式也是乙個物件 物件是記憶體中專門用來儲存資料的一塊區域 一切皆物件 函式的引數 defrt a print zzzz a rt 3 def sum a,b,c print a b c sum 4,5,8 定義形參時可以指定默值,沒...