leetcode刷題之兩數相加(go實現)

2021-09-24 22:47:49 字數 1322 閱讀 6613

題目來自於leetcode()。

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

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

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

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

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

注:這道題有助於理解鍊錶,幫助複習鍊錶的操作

解法一:暴力法(耗時12 ms,記憶體5.7m,後期看能否優化)

先講兩個鍊錶中的值取出來,分別存在slice中。比較兩個slice的長度,進行調換(將長度長的賦值給a,端的給b)。迴圈相加,並將結果存入a中(這裡設定了乙個標桿 j ,用來表示上一輪迴圈是否大於等於10)。最後迴圈a,將結果一一放入到鍊錶中(這裡需要在裡面取到鍊錶的尾部)。

**如下:

/**

* definition for singly-linked list.

* type listnode struct

*/func addtwonumbers(l1 *listnode, l2 *listnode) *listnode else

}var b int

for else

}alen := len(a)

blen := len(b)

j := 0

//檢測長度,符合條件,則交換變數值,並重新獲得長度值

if alen < blen

for i:=0;i= 10 else

}for m:=blen;m= 10 else

}//最後接測j,大於0說明最後兩個元素相加大於10

if j > 0

var l3 = &listnode

l5 := l3 //這裡賦值,因為是指標,所以l3的更改能體現到l5上,最後返回l5

for _,v := range a

var l4 = new(listnode)

l4.val = v

l4.next = nil

l3.next = l4

l3 = l3.next //將l3的指標指向鍊錶尾部

}return l5

}

leetcode刷題 兩數相加

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

leetCode 刷題 兩數相加

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

LeetCode刷題日記之兩數相加

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