两数相加php,两数之和。(PHP、GO)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

示例 1:

b1848ea5c58e2c74e47a08438cf048de.png

输入:l1 = [2,4,3], l2 = [5,6,4]

输出:[7,0,8]

解释:342 + 465 = 807.

指针向后遍历相加就可以了,主要是注意进位。

增加一个哨兵节点指向后面生成的节点。

php代码:

/**

* Definition for a singly-linked list.

* class ListNode {

* public $val = 0;

* public $next = null;

* function __construct($val = 0, $next = null) {

* $this->val = $val;

* $this->next = $next;

* }

* }

*/

class Solution {

/**

* @param ListNode $l1

* @param ListNode $l2

* @return ListNode

*/

function addTwoNumbers($l1, $l2) {

$list = new ListNode();

$this->getSumList($l1,$l2,$list);

return $list->next;

}

function getSumList($l1,$l2,$list,$add=0){

if($l1 === null && $l2 === null && $add ==0){

return $list;

}

$tmp = $l1->val+$l2->val+$add;

$tmp_list = new ListNode($tmp%10);

$list->next = $tmp_list;

$l1 = $l1->next;

$l2 = $l2->next;

return $this->getSumList($l1,$l2,$tmp_list,$tmp>=10?1:0);

}

}

go代码:

/**

* Definition for singly-linked list.

* type ListNode struct {

* Val int

* Next *ListNode

* }

*/

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {

list := &ListNode{}

newList := list

tmp := 0

for l1 != nil || l2 != nil || tmp !=0{

if l1 != nil {

tmp += l1.Val

l1 = l1.Next

}

if l2 != nil{

tmp += l2.Val

l2 = l2.Next

}

tmpList := &ListNode{tmp%10,nil}

newList.Next = tmpList

tmp = tmp/10

newList = newList.Next

}

return list.Next

}

标签:tmp,ListNode,list,next,l2,l1,GO,PHP,两数

来源: https://blog.csdn.net/wyisgoodman/article/details/114139994

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值