leetcode刷題日記

2021-10-10 13:42:59 字數 2368 閱讀 5930

給你兩個陣列,arr1 和 arr2,

arr2 中的元素各不相同

arr2 中的每個元素都出現在 arr1 中

對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 **現過的元素需要按照公升序放在 arr1 的末尾。

示例:輸入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]

輸出:[2,2,2,1,4,3,3,9,6,7,19]

arr1.length, arr2.length <= 1000

0 <= arr1[i], arr2[i] <= 1000

arr2 中的元素 arr2[i] 各不相同

arr2 中的每個元素 arr2[i] 都出現在 arr1 中

class

solution

(object):

defrelativesortarray

(self, arr1, arr2)

:"""

:type arr1: list[int]

:type arr2: list[int]

:rtype: list[int]

"""sorted1=

sorted2=

for i in arr1:

if i not

in arr2:

else

: sorted2.sort(key=

lambda x:arr2.index(x)

) sorted1.sort(reverse=

false

)return sorted2+sorted1

sort() 函式用於對原列表進行排序,如果指定引數,則使用比較函式指定的比較函式。

list

.sort(

cmp=

none

, key=

none

, reverse=

false

)

引數

cmp -- 可選引數, 如果指定了該引數會使用該引數的方法進行排序。

key -- 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。

reverse -- 排序規則,reverse = true 降序, reverse = false 公升序(預設)。

key 和 reverse 比乙個等價的 cmp 函式處理速度要快。這是因為對於每個列表元素,cmp 都會被呼叫多次,而 key 和 reverse 只被呼叫一次

返回值該方法沒有返回值,但是會對列表的物件進行排序。

sorted() 函式對所有可迭代的物件進行排序操作。

sorted

(iterable,

cmp=

none

, key=

none

, reverse=

false

)

引數說明:

1)cmp指定乙個定製的比較函式,這個函式接收兩個引數(iterable的元素),如果第乙個引數小於第二個引數,返回乙個負數;如果第乙個引數等於第二個引數,返回零;如果第乙個引數大於第二個引數,返回乙個正數。預設值為none。

2)key指定乙個接收乙個引數的函式,這個函式用於從每個元素中提取乙個用於比較的關鍵字。預設值為none。

3)reverse是乙個布林值。如果設定為true,列表元素將被倒序排列。

4)key引數的值應該是乙個函式,這個函式接收乙個引數並且返回乙個用於比較的關鍵字。對複雜物件的比較通常是使用物件的切片作為關鍵字。

返回值

返回重新排序的列表。

sort 與 sorted 區別:

sort 是應用在 list 上的方法,sorted 可以對所有可迭代的物件進行排序操作。

list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值,而內建函式 sorted 方法返回的是乙個新的 list,而不是在原來的基礎上進行的操作。

要在python3中實現複雜的自定義排序,可借助cmp_to_key函式:

leetcode 刷題日記

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。採用乙個帶頭節點的指標head鏈結合併後的新指標,乙個空指標pre進行迴圈載入兩個鍊錶中的節點比較兩個鍊錶節點的值,pre指標鏈結較小值的鍊錶的節點,依次遍歷兩個鍊錶,直到乙個為空停止迴圈。複雜度分析 時間複...

leetcode 刷題日記

題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...

Leetcode 刷題日記

從去年的9月開始我已經系統地複習了一遍資料結構,因此嚴格意義上也不算從零開始,只是缺乏系統地上機練習,畢竟手寫和上機還是不一樣的。本文只散亂地記下在刷題過程中常用的工具 手法和思想,不涉及具體的資料結構的知識。向量 vector 是乙個封裝了動態大小陣列的順序容器 sequence containe...