zoukankan      html  css  js  c++  java
  • 【LeetCode & 剑指offer刷题】链表题9:Add Two Numbers

    【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)

    Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse orderand 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.
    Example
    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807.

    C++
     
    //加链表表示的两个数,高位在链表后面,低位在前面
    /**
     * 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 preHead(0);
            ListNode* p = &preHead; //头结点,用于保存首结点指针,以及初始化p
            int carry = 0; //进位
           
            while(l1 || l2 || carry) //循环
            {
                int sum = (l1? l1->val:0) + (l2? l2->val:0) + carry; //对应位相加,判断是否为空,若为空,相当于加0
                carry = sum/10; //保存进位
                p->next = new ListNode(sum%10); //创建新的结点,并赋值,构造函数完成val和next指针的赋值
                p = p->next; //指向下一个结点
      
                l1 = l1? l1->next:l1; //若为空,则仍为空,若不为空,指向下一个结点
                l2 = l2? l2->next:l2;
               
            }
            return preHead.next; //返回首结点指针
           
        }
    };
     
  • 相关阅读:
    hihocoder 1049 后序遍历
    hihocoder 1310 岛屿
    Leetcode 63. Unique Paths II
    Leetcode 62. Unique Paths
    Leetcode 70. Climbing Stairs
    poj 3544 Journey with Pigs
    Leetcode 338. Counting Bits
    Leetcode 136. Single Number
    Leetcode 342. Power of Four
    Leetcode 299. Bulls and Cows
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225214.html
Copyright © 2011-2022 走看看