LeetCode刷題記錄1 5

2021-10-03 00:13:03 字數 3486 閱讀 2292

題解

dicts =

for index, value in

enumerate

(nums)

: temp = target - value

if temp in dicts:

return

[dicts[temp]

, index]

dicts[value]

= index

# 也可以直接使用陣列遍歷,效果差不多

enumerate() 函式用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中

題解

prenode = listnode(0)

lastnode = prenode

val =

0while l1 or l2 or val:

val,cur =

divmod

(val+

(l1.val if l1 else0)

+(l2.val if l2 else0)

,10) lastnode.

next

= listnode(cur)

lastnode = lastnode.

next

l1 = l1.

next

if l1 else

none

l2 = l2.

next

if l2 else

none

return prenode.

next

python divmod() 函式把除數和餘數運算結果結合起來,返回乙個包含商和餘數的元組(a // b, a % b)。

面試中該題出現次數:

題解

if s is

none

orlen

(s)==0:

return0;

form =

0to =

1maxlength =

1while to<

len(s)

: site = s[form:to]

.find(s[to]

)if site !=-1

: length = to-form

if length > maxlength:

maxlength = length

form = form+site+

1 to +=

1if to-form > maxlength:

maxlength = to-form

return maxlength

參考部落格:

面試中該題出現次數:

題解

nums1.extend(nums2)

nums1.sort(

)# 有點作弊

half =

len(nums1)//2

return

(nums1[half]

+ nums1[

~half])/

2

中位數演算法參考部落格:

python中list sort的實現原理:

中位數是按順序排列的一組資料中居於中間位置的數,如果觀察值有偶數個,通常取最中間的兩個數值的平均數作為中位數。

面試中該題出現次數:

# 每個字元之間插入 #

ss =

'$#'

+'#'

.join(

[x for x in s])+

'#`'

p =[1]

*len

(ss)

# r的初始化

center =

0mx =

0# mx 則為 center + r[center],也就是這個子串的右邊界

max_str =

''for i in

range(1

,len

(p)-1)

:if i < mx:

j =2* center - i # i 關於 center 的對稱點

p[i]

=min

(p[j]

,mx-i)

# 嘗試繼續向兩邊擴充套件,更新 p[i]

while ss[i - p[i]

]== ss[i + p[i]]:

# 不必判斷是否溢位,因為首位均有特殊字元,肯定會退出

p[i]+=1

# 更新中心

if i + p[i]-1

> mx:

mx = i + p[i]-1

center = i

# 更新最長串if2

* p[i]-1

>

len(max_str)

: max_str = ss[i - p[i]+1

: i + p[i]

]return max_str.replace(

'#',

'')參考部落格:

回文串(palindromic string)是指這個字串無論從左讀還是從右讀,所讀的順序是一樣的;簡而言之,回文串是左右對稱的。

LeetCode 刷題記錄(1 5題)

1 兩數之和 題目鏈結 class solution 一次雜湊法 deftwosum self,nums,target type nums list int type target int rtype list int m for i in range len nums minus target n...

leetcode刷題記錄

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...