TLP Task14學習筆記

2021-10-17 12:55:02 字數 2721 閱讀 6335

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]

輸出: true

這裡有一位寫了15種陣列驗重方法。

比較好寫的是排序(或者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

3/ \

1 4\

2輸出: 1

示例 2:

輸入: 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 定義形參時可以指定默值,沒...