Leetcode 209 長度最小的子陣列

2021-10-03 02:55:30 字數 2141 閱讀 4537

需要用到的資料結構:列表、字典

字串如何轉換成列表?

例1:「abcd」->[a,b,c,d]

str

="abcd"

list

=list

(str

)

例2:

「ad sc fv」->[ad,sc,fv]

str

="ad sc fv"

list

=str

.split(

' ')

如何給字典賦值

例1:

a=

#建立空字典

b="xx"c=1

a[b]

=cprint

(a)

執行得:

python中的迴圈體怎麼寫?

這裡模擬c語言:

for

(int i=

0;i<

9;i++

)

那麼python中的寫法是:

for i in

range(9

):pass

#或者for i in

range(0

,9):

pass

這一題應將要比較的兩個字串拆分成列表,並將列表中元素的索引值對映到對應元素上形成字典,比較形成的字典是否相等,若相等,則返回true,否則返回false。推演:

def

test()

:#初始化

pattern=

"abba"

str=

"dog cat cat dog"

#列表化

list1=

list

(pattern)

list2=

str.split(

str)

#求列表長

len1=

len(list1)

len2=

len(list2)

#依題意可知符合條件的情況下len1必然等於len2,因此這裡作比較,若不相等,則直接返回false。

if len1!=len2:

return flase

#符合條件,進入迴圈體

for i in

range

(len1)

:#判斷list1和list2的第i位元素是否作為鍵存在於各自的字典中,若都在,

if list1[i]

in dic1 and list2[i]

in dic1:

#判斷鍵對應的值是否相等。為什麼要判相等呢?後面看

if dic1[list1[i]

]==dic2[list2[i]]:

#如果相等,繼續執行迴圈體

continue

else

:#否則,說明兩字串不符合要求

return

false

#若都不在,

elif list1[i]

notin dic1 and list2[i]

notin dic1:

#將它們加進字典,並將索引值設為鍵的值

dic1[list1[i]]=i

dic2[lsit2[i]]=i

#若乙個在乙個不在:

else

:#則一定不符合要求

return flase

#若能遍歷結束,說明是符合的

renturn true

解構:

1.list1=[a,b,b,a],list2=[dog,cat,cat,dog]。dic1={},dic2={}

2.第一輪迴圈,a不在dic1中,dog不在dic2中,字典元素追加,得:dic1=,dic2=

3.第二輪迴圈,b不在dic1張,cat不在dic2中,字典元素追加,得:dic1=,dic2=

4.第四輪迴圈,b已在dic1中,cat已在dic2中.且dic1[「b」]=dic2[「cat」]=1,所以跳出當前迴圈繼續.

5.第五輪迴圈,a已在dic1中,dog已在dic2中.且dic1[「a」]=dic2[「dog」]=0,所以跳出當前迴圈繼續.

6.迴圈結束,返回true。

leetcode 209 長度最小的陣列

題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。參考 負雪明燭 class solution object def minsubarraylen self,s,nums type s int ty...

LeetCode 209 長度最小的子陣列

題目鏈結 題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。解決方法 兩種方法 ...

Leetcode209 長度最小的子陣列

給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。public intminsubarr...