兩數之和,兩數相加 leetcode

2022-09-03 08:09:11 字數 2336 閱讀 2529

1. 兩數之和,在 leetcode 裡面是屬於 easy 級別的。我們看看他的題目和解法。

題目: 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

例子: 

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

因為 nums[

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

所以返回 [

0, 1

]題目說的很清楚, 給出乙個列表和乙個 目標值,找出列表中兩數之和是 目標值的, 乙個數不可重複使用。

思路:我的思路是 迴圈遍歷每乙個數記作 index,然後 用 目標值(target)減去 index,看結果在不在這個列表裡。

**:

1

deftwosum(self, nums, target):

2"""

3:type nums: list[int]

4:type target: int

5:rtype: list[int]

6"""

7 res_list =

8for index, item in

enumerate(nums):

9 res = target -item

10if res in

nums:

11 res_index =nums.index(res)

12if res_index !=index:

1314

15break

1617

return res_list

總結:我的這個解法雖然不是最優解,但是總比雙重 for 迴圈好一點(自我感覺)。時間複雜度 為 o(n),  空間複雜度 為 o(n)。

2. 兩數相加

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

例子:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8原因:342 + 465 = 807

思路:逆序的兩個簡單鍊錶,取出數相加 大於10 進1,別忘了最後一位相加大於 10 所進的 1.

**:

#

definition for singly-linked list.

#class listnode:

#def __init__(self, x):

#self.val = x

#self.next = none

class

solution:

defaddtwonumbers(self, l1, l2):

""":type l1: listnode

:type l2: listnode

:rtype: listnode

"""res =listnode(0)

cur =res

carry =0

while l1 or

l2: n1 = l1.val if l1 != none else

0 n2 = l2.val if l2 != none else

0 sum = n1 + n2 +carry

carry = 1 if sum >= 10 else

0 cur.next = listnode(sum % 10)

cur =cur.next

l1 = l1.next if l1 != none else

none

l2 = l2.next if l2 != none else

none

if carry !=0:

cur.next = listnode(1)

return res.next

時間複雜度:o(\max(m, n))o(max(m,n)),假設 mm 和 nn 分別表示 l1l1 和 l2l2 的長度,上面的演算法最多重複 \max(m, n)max(m,n) 次。

空間複雜度:o(\max(m, n))o(max(m,n)), 新列表的長度最多為 \max(m,n) + 1max(m,n)+1。

參考一下。

ps:

兩數之和 兩樹相加

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...

leetcode 兩數之和與兩數之和

題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...

A 兩數之和

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。方法一 遍歷每個元素x,查詢是否存在乙個值與 target x 相等。public int twosum int nums,int target throw newilleg...