力扣LeetCode刷題日記(一)

2021-09-26 01:52:02 字數 2079 閱讀 9624

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

class

solution

:"""

dict_sum: 儲存的是列表的值和對應的索引組成的鍵值對,key: 列表的值

從左至右遍歷列表,檢查target-nums[i]的值在字典dict_sum是否存在

如果存在,返回[dict_num.get(target - nums[i]), i]

如果不存在,將列表的值和對應的索引作為一對鍵值對存入字典

"""deftwosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

: dict_num =

for i, m in

enumerate

(nums)

:if dict_num.get(target - m)

isnot

none

:return

[dict_num.get(target - m)

, i]

dict_num[m]

= i

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

addtwonumbers

(self, l1: listnode, l2: listnode)

-> listnode:

head = listnode(0)

p = head

add =

0# 兩數相加後的進製

while l1 and l2:

p.next

= listnode(

(l1.val + l2.val + add)%10

)# 兩個數相加的個位數儲存在新結點中

add =

(l1.val + l2.val + add)

//10

p, l1, l2 = p.

next

, l1.

next

, l2.

next

# 退出while迴圈時,可能是l1的鍊錶先結束,可能是l2的鍊錶先結束,也可能兩個一起結束

# 把剩下的數都連線到l1後面

if l1:

# l2的鍊錶先行結束

pass

else

:# l2的鍊錶先行結束

l1 = l2

while l1:

p.next

= listnode(

(l1.val + add)%10

) add =

(l1.val + add)

//10

p, l1 = p.

next

, l1.

next

# 鍊錶都計算結束後若還有進製

if add !=0:

p.next

= listnode(add)

return head.

next

力扣LeetCode刷題日記(二)

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

力扣刷題日記(3)

最近有點懶,哈哈,刷題挺慢的,今天用python3 練練手了,題目如下 設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,...

力扣刷題日記(5)

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...