zoukankan      html  css  js  c++  java
  • Leetcode 2. Add Two Numbers(medium)

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

     有可能链表很长,那么遍历之后求出值再相加的方案肯定行不通,即有可能是个大数。所以就是分别对每个结点的值进行遍历,对应的结点值相加然后放到新的结点中。注意的一点是进位的情况,最后一次加法的进位要单独进行处理。

    /**
     * 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(-1);    // 不能算第一个结点
            ListNode *cur = res;
            int carry = 0;
            while (l1 || l2) {
                int n1 = l1 ? l1->val : 0;
                int n2 = l2 ? l2->val : 0;
                int sum = n1 + n2 + carry;
                carry = sum / 10;
                cur->next = new ListNode(sum % 10);
                cur = cur->next;
                if (l1) l1 = l1->next;
                if (l2) l2 = l2->next;
            }
            if (carry) cur->next = new ListNode(1);
            return res->next;
        }
    };
  • 相关阅读:
    WEB常见漏洞合集
    SQL注入个人理解及思路(包括payload和绕过的一些方式)
    渗透测试流程
    kali 中文乱码解决方法
    python编写的banner获取代码的两种方式
    python编写banner获取的常用模块
    Python安全基础编写
    oracle数据库(四)
    oracle数据库(三)
    oracle数据库(二)
  • 原文地址:https://www.cnblogs.com/simplepaul/p/7762297.html
Copyright © 2011-2022 走看看