《leetCode-php》两个代表数字的链表求和

给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是百位数...),求这个两个数的和,结果也用链表表示。

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

输出: 7 -> 0 -> 8

<?php
class Node {
    public $next = null;
    public $val;
    public function __construct($val) {
        $this->val = $val;
    }
}
function addList($head1, $head2) {
    $pre        = null;
    $nextVal    = 0;
    $returnNode = null;
    while($head1 != null || $head2 !== null) {
        if ($head1 != null && $head2 != null) {
            $val = $head1->val + $head2->val + $nextVal;
            $nextVal = intval($val / 10);
            $node = new Node($val % 10);
            if (is_null($pre)) {
                $pre = $node;
                $returnNode = $node;
            } else {
                $pre->next = $node;
                $pre = $node;
            }
            $head1 = $head1->next;
            $head2 = $head2->next;
        } else {
            if ($head1 == null) {
                $val = $head2->val + $nextVal;
                $nextVal = intval($val / 10);
                $node = new Node($val % 10);
                $pre->next = $node;
                $pre = $node;
                $head2 = $head2->next;
            }
            if ($head2 == null) {
                $val = $head1->val + $nextVal;
                $nextVal = intval($val / 10);
                $node = new Node($val % 10);
                $pre->next = $node;
                $pre = $node;
                $head1 = $head1->next;
            }
        }
    }
    return $returnNode;
}
$node1 = new Node(1);
$node2 = new Node(9);
$node3 = new Node(7);
$node1->next = $node2;
$node2->next = $node3;
$node4 = new Node(9);
$node5 = new Node(1);
$node4->next = $node5;
$ret = addList($node1, $node4);
while ($ret != null) {
    print $ret->val;
    $ret = $ret->next;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值