zoukankan      html  css  js  c++  java
  • LeetCode 2.两数相加

    LeetCode 2.两数相加

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

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

    您可以假设除了数字 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));
  • 相关阅读:
    nginx模块学习——nginx_http_push_module模块深入讲解和聊天室实现
    常见的qq在线客服代码
    MongoDB数据库介绍及安装(一)
    Python 创建类
    Python backup脚本
    Python 类的初始化小案例
    Python 类实例化
    Python 类初始化__init__
    ObjC(ObjectiveC): NSString应该用initWithFormat? 还是 stringWithFormat?
    NSUserDefaults
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/11756313.html
Copyright © 2011-2022 走看看