LeetCode--兩數相加
阿新 • • 發佈:2021-01-16
技術標籤:PHP
給你兩個 非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。
請你將兩個數相加,並以相同形式返回一個表示和的連結串列。
你可以假設除了數字 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] 內
題目資料保證列表表示的數字不含前導
答案
/** * Definition for a singly-linked list. * class ListNode { * public $val = 0; * public $next = null; * function __construct($val) { $this->val = $val; } * } */ class Solution { /** * @param ListNode $l1 * @param ListNode $l2 * @return ListNode */ function addTwoNumbers($l1, $l2) { $value = $l1->val + $l2->val; $carray = 0; if($value>9){ $carray = 1; $value -= 10; } $l = $cur = new ListNode($value); while ($l1->next && $l2->next){ $l1 = $l1->next; $l2 = $l2->next; $val = $l1->val + $l2->val + $carray; if($val > 9){ $carray = 1; $val -= 10; }else{ $carray = 0; } $cur = $cur->next = new ListNode($val); } while ($l1->next){ $l1 = $l1->next; $value = $l1->val + $carray; if($value > 9){ $carray = 1; $value -= 10; }else{ $carray = 0; } $cur = $cur->next = new ListNode($value); } while ($l2->next){ $l2 = $l2->next; $value = $l2->val + $carray; if($value > 9){ $carray = 1; $value -= 10; }else{ $carray = 0; } $cur = $cur->next = new ListNode($value); } if($carray>0){ $cur->next = new ListNode(1); } return $l; } }