LeetCode 两数相加

LeetCode 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807



知识点:

  • strrev(); // 实现字符串反转
  • str_split(); // 分割字符串
  • % // 取余
  • intval(数/10); // 整除
  • __construct 对象初始化
  • 尾插法

PHP代码:

class ListNode
{
    public $val = 0;
    public $next = null;
    function __construct($val)
    {
        $this->val = $val;
    }
}

// 初始化测试数据
/*
$l1 = new ListNode(2);
$l11 = new ListNode(4);
$l12 = new ListNode(3);
$l1->next = $l11;
$l11->next = $l12;
$l2 = new ListNode(5);
$l21 = new ListNode(6);
$l22 = new ListNode(4);
$l23 = new ListNode(4);
$l2->next = $l21;
$l21->next = $l22;
$l22->next = $l23;
*/

function addTwoNumbers($l1, $l2) {
    $ans = ‘‘;
    $mod = 0;

    $array_1 = $array_2 = array();
    while ($l1 -> next != null) {
        array_push($array_1, $l1 -> val);
        $l1 = $l1 -> next;
    }
    array_push($array_1, $l1 -> val);
    while ($l2 -> next != null) {
        array_push($array_2, $l2 -> val);
        $l2 = $l2 -> next;
    }
    array_push($array_2, $l2 -> val);

    for ($i = 0; $i < max(count($array_1), count($array_2)); ++ $i) {
        $now1 = $i >= count($array_1) ? 0: intval($array_1[$i]);
        $now2 = $i >= count($array_2) ? 0: intval($array_2[$i]);
        $mod += $now1 + $now2;
        $ans .= strval($mod % 10);
        $mod = intval($mod / 10);
    }
    if ($mod != 0) {
        $ans .= strval($mod);
    }
    $ansNode = $ansNodeList = new ListNode($ans[0]);
    for ($i = 1; $i < strlen($ans); ++ $i) {
        $tempNode = new ListNode($ans[$i]);
        $ansNode->next = $tempNode;
        $ansNode = $tempNode;
    }
    return $ansNodeList;
}

var_dump(addTwoNumbers($l1, $l2));

原文地址:https://www.cnblogs.com/GetcharZp/p/11756313.html

时间: 2024-08-29 19:20:11

LeetCode 两数相加的相关文章

LeetCode - 两数相加(No.2)

2 - 两数相加 date : Dec.28th, 2019 platform : windows thinking raw method for problem solving. code /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* addTwoNumbers(struct ListNode* l

leetcode两数相加

题目描述很清楚,最容易想到的就是从前往后一次相加即可. 题中所给的数据结构描述: 第一次的算法: class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode res=new ListNode(0); ListNode cur=res; int flag = 0; while(l1!=null&&l2!=null) { cur.val=l1.val+l2.val+flag; flag=

Leetcode 两数相加(链表)

https://leetcode-cn.com/problems/add-two-numbers/ 代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListN

【LeetCode】- Two Sum(两数相加)

[ 问题: ] Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please no

Leetcode 002.两数相加

1.题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 2.易理解版本 2.1 解题思路 题中链表顺序正好是低

LeetCode 第2题 两数相加

/* T2:两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807*/ /** * Definition for

LeetCode之 两数相加

本内容为LeetCode第二道题目:两数相加 # -*- coding: utf-8 -*- """ Created on Sun Mar 10 10:47:12 2019 @author: Administrator 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头

LeetCode 445. 两数相加 II(Add Two Numbers II)

445. 两数相加 II 445. Add Two Numbers II 题目描述 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转. LeetCode445. Add Two Numbers II中等 示例: 输入: (7 -> 2 -> 4 -> 3) + (5 ->

Leetcode算法系列(链表)之两数相加

Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和.您可以假设除了数字 0 之外,这两个数都不会以 0 开头.示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 链接:https://le