zoukankan      html  css  js  c++  java
  • LeetCode 2. Add Two Numbers

    问题链接

    LeetCode 2

    题目解析

    给出两个数字链表,求二者之和,以链表形式返回。

    解题思路

    简单题。考察链表的应用,建立一个新链表,遍历两个链表,每位两个数字相加,添加一个新节点到新链表后面,flag记录进位问题。注意最高位的进位问题,有可能需要 多添加一个节点。

    参考代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
            ListNode *res = new ListNode(0);
            ListNode *cur = res;
            int num1, num2, sum, flag = 0;
            
            while (l1 || l2) {
                if (l1) {
                    num1 = l1->val;
                    l1 = l1->next;
                }
                else num1 = 0;
                if (l2) {
                    num2 = l2->val;
                    l2 = l2->next;
                }
                else num2 = 0;
                sum = num1 + num2 + flag;
                flag = sum / 10;
                
                cur->next = new ListNode(sum%10);
                cur = cur->next;
            }
            if (flag) cur->next = new ListNode(1);
            
            return res->next;
        }
    };
    

    LeetCode All in One题解汇总(持续更新中...)

    本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


  • 相关阅读:
    死锁
    不能复制文件到服务器
    JWT
    身份验证
    依赖注入
    ml.net
    swift 枚举、结构、类
    nginx 负载均衡
    sql 时间函数大全
    更新SVN时提示要清理,但清理失败,乱码得解决方案
  • 原文地址:https://www.cnblogs.com/AlvinZH/p/8535172.html
Copyright © 2011-2022 走看看