给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class ListNode
{
public $val = 0;
public $next = null;
function __construct($val = 0, $next = null)
{
$this->val = $val;
$this->next = $next;
}
}
// 7 4 3
$linked_list1 = new ListNode();
$linked_list1 ->val = 7;
$next = $linked_list1 -> next = new ListNode( );
$next ->val = 4;
$next = $next -> next = new ListNode( );
$next ->val = 3;
// 5 6 9 6
$linked_list2 = new ListNode();
$val1 = $linked_list2 ->val =5;
$next = $linked_list2 -> next = new ListNode( );
$next ->val = 6;
$next = $next -> next = new ListNode( );
$next ->val = 9;
$next = $next -> next = new ListNode( );
$next ->val = 6;
//print_r($linked_list1);
//print_r($linked_list2);
class Solution
{
/**
* @param ListNode $l1
* @param ListNode $l2
* @return ListNode
*/
function addTwoNumbers($l1, $l2)
{
// 判断链表开头是否为空
if( $l1 -> val == 0 || $l2 -> val == 0 ) {
return 'error';
}
// 读取链表中的值相加
$tmp = 0;
$new_linked_list = null;
while( $l1 -> val != null || $l2 -> val != null ){
$l1_val = $l1 -> val??0;
$l2_val = $l2 -> val??0;
$sum = $l1_val + $l2_val;
if( $sum >= 10 ){
$val = $sum - 10;
}else{
$val = $sum;
}
$one = new ListNode( );
if( $new_linked_list == null ){
$one -> val = $val;
$new_linked_list = $one;
}else{
$one -> val = $val + $tmp;
$next -> next = $one;
}
$next = $one;
if( $sum >= 10 ){
$tmp = 1;
}else{
$tmp = 0;
}
$l1 = $l1 ->next;
$l2 = $l2 ->next;
}
return $new_linked_list;
}
}
echo 'Sum LinkedList Is :' ."\r\n";
$obj = new Solution();
$a = $obj ->addTwoNumbers( $linked_list1 , $linked_list2 );
print_r($a);