leetCode刷题-第二题两数之和
兩數之和
題目連接:
題目鏈接
給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,并且每個節點只能存儲 一位 數字。
請你將兩個數相加,并以相同形式返回一個表示和的鏈表。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例 1:
輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋:342 + 465 = 807.
示例 2:
輸入:l1 = [0], l2 = [0]
輸出:[0]
示例 3:
輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
輸出:[8,9,9,9,0,0,0,1]
提示:
每個鏈表中的節點數在范圍 [1, 100] 內
0 <= Node.val <= 9
題目數據保證列表表示的數字不含前導零
通過次數734,192提交次數1,851,300
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-two-numbers
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
題目解析
題目中說的是兩個鏈表都是逆序的,也就是整數的高位在鏈表的底部存儲著,那么只需要記錄如下信息,兩個鏈表對應位數想加,進位保留,進位和會放到下次鏈表求sum的時候一起使用,若是兩個鏈表都結束進位非空則在申請一個node節點放到返回鏈表的末尾并把對應值放到末尾鏈表上
go語言實現:
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {listNode := new(ListNode)listNode.Val = l1.Val + l2.Vall1 = l1.Nextl2 = l2.Nextl3 := listNodex := l3.Val / 10l3.Val = l3.Val % 10for {if l1 == nil && l2 == nil {if x != 0 {l3.Next = new(ListNode)l3.Next.Val = x}break}l3.Next = new(ListNode)l3.Next.Val += xif l1 != nil {l3.Next.Val += l1.Vall1 = l1.Next}if l2 != nil {l3.Next.Val += l2.Vall2 = l2.Next}x = l3.Next.Val / 10l3.Next.Val = l3.Next.Val % 10l3 = l3.Next}return listNode }
C++代碼實現
總結
以上是生活随笔為你收集整理的leetCode刷题-第二题两数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:谭昊翔(1990-),男,华南师范
- 下一篇: 【软件测试】黑盒测试の边界值分析法