力扣刷題(三)查詢 查詢表

2021-10-23 19:17:43 字數 2169 閱讀 4752

第一類: 查詢有無–set

元素』a』是否存在,通常用set:集合

set只儲存鍵,而不需要對應其相應的值。 set中的鍵不允許重複

第二類: 查詢對應關係(鍵值對應)–dict

元素』a』出現了幾次:dict–>字典 dict中的鍵不允許重複

第三類: 改變對映關係–map

通過將原有序列的關係對映統一表示為其他

leetcode 202. 快樂數

題目描述:

「快樂數」定義為:對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是無限迴圈但始終變不到 1。如果可以變為 1,那麼這個數就是快樂數。

如果 n 是快樂數就返回 true ;不是,則返回 false 。

簡單理解就是:假設乙個數是13;

則進行以下運算:

12 +32=10;

12+02=1;

那麼13這個數就是快樂數。

解題思路

判斷輸入的數是否為1,如果不為1,則進行如上的計算,先取其個位數平方,在依次計算十位數,最後結果相加,如果不為1,則繼續進行計算,直到結果為1;如果達不到1 的結果,則輸出false。

執行**如下:

class

solution

:def

(self, n:

int)

->

bool

: already=

set(

)while n !=1:

sum=0;

while n>0:

# 取n的最後一位數(個位數)

tmp=n%

10sum

+=tmp**

2# 將n的最後一位數截掉,取十位數

n//=

10if

sumin already:

return

false

else

: already.add(

sum)

n=sumreturn

true

leetcode205. 同構字串

題目描述

給定兩個字串 s 和 t,判斷它們是否是同構的。

如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。

所有出現的字元都必須用另乙個字元替換,同時保留字元的順序。兩個字元不能對映到同乙個字元上,但字元可以對映自己本身。

簡單來講:就是

egg ->add

***** ->title

需要注意的是,同乙個字母必須都替換。

解題思路

兩個字串中的字母數量相同,對應的索引位置相同

**如下:

class

solution

:def

isisomorphic

(self, s:

str, t:

str)

->

bool

:return

list

(map

(s.index,s))==

list

(map

(t.index,t)

)

leetcode 290. 單詞規律

題目描述

給出乙個模式(pattern)以及乙個字串,判斷這個字串是否符合模式。

例如:pattern = 「abba」, str = 「dog cat cat dog」

class

solution

:def

wordpattern

(self, pattern:

str,

str:

str)

->

bool

:str

=str

.split(

)return

list

(map

(pattern.index, pattern))==

list

(map

(str

.index,

str)

)

力扣刷題系列

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。從中學知識知道,如果需要求一組數字的中位數,那麼先要從小到大排列這些數字。接著,如果總共有奇數個...

刷題 力扣 119

題目鏈結 題目描述 給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 3 輸出 1,3,3,1 高階 題目分析 根據題目描述楊輝三角形每一行從左到右依次是 組合 combiner是用來計算組合的結果 依次遍歷每一行從左到右 c...

刷題 力扣 665

題目鏈結 題目描述 給你乙個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 0 i n 2 總滿足 nums i nums i 1 示例 1 輸入 nums 4,2,3 輸出 true 解釋 你可...