Leetcode基礎刷題之PHP解析(2. Add Two Numbers)
2 0 1 9 -5 -13 星 期一 開 始 吧
上 一 題 鏈 接 演算法之二分查詢
題 目 描 述
給定兩個非空的連結串列,它們的位數是按照逆序儲存的,並且每個結點儲存一個非負整數,將各結點上的兩個數字相加返回一個新的連結串列。
題 目 分 析
這題還需要注意幾個情況就是:1.兩個連結串列的長度不一樣的.2.如果某兩個結點相加大於10時取個位數,並且進一位。這也就能看出題中最後一個結點值是8,4+6進了一位。這道題可以用遞迴來解。
/** * Definition for a singly-linked list. * class ListNode { *public $val = 0; *public $next = null; *function __construct($val) { $this->val = $val; } * } */ class Solution { private $res=0; /** * @param ListNode $l1 * @param ListNode $l2 * @return ListNode */ function addTwoNumbers($l1, $l2) { $node=new ListNode($this->res + $l1->val + $l2->val); if($this->res=intval($node->val >9)){ $node->val -=10; } $node->next=(!$this->res && is_null($l1->next) && is_null($l2->next) )?null:$this->addTwoNumbers($l1->next,$l2->next); return $node; } }
Github整理地址: https://github.com/wuqinqiang/leetcode-php