zoukankan      html  css  js  c++  java
  • 面试题 02.05. 链表求和(链表)

    1. 题目

    给定两个用链表表示的整数,每个节点包含一个数位。

    这些数位是反向存放的,也就是个位排在链表首部。

    编写函数对这两个整数求和,并用链表形式返回结果。

    2. 示例

    示例1:

    输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295

    输出:2 -> 1 -> 9,即912

    3. 题解

    这道题的思路很简单,只需要针对每一位计算即可。

    遍历两个链表,若两个都不为空,直接l1.val+l2.val+temp,其中temp为进位;

    若仅有一个链表不为空,则l1.val(或l2.val) + temp;

    遍历结束后,因为还要看temp是否为0,若不为0,则需要加入链表。

    4. Code

     1 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
     2         int temp = 0;
     3         ListNode listNode = new ListNode(0);
     4         ListNode cur = listNode;
     5         int l = 0;
     6         while(l1 != null || l2 != null) {
     7             if(l1 != null && l2 != null) {
     8                 l = l1.val + l2.val + temp;
     9                 l1 = l1.next;
    10                 l2 = l2.next;
    11             } else if(l1 != null) {
    12                 l = l1.val + temp;
    13                 l1 = l1.next;
    14             } else if(l2 != null){
    15                 l = l2.val + temp;
    16                 l2 = l2.next;
    17             }
    18             int out = l % 10;
    19             cur.next = new ListNode(out);
    20             cur = cur.next;
    21             temp = l / 10;
    22         }
    23         if(temp != 0) {
    24             cur.next = new ListNode(temp);
    25             cur = cur.next;
    26         }
    27         return listNode.next;
    28     }
  • 相关阅读:
    asp.net性能的技巧
    『笔记』数学数论(二)
    『笔记』数学数论(五)
    『笔记』数学数论(一)
    『笔记』数学数论(四)
    『笔记』分块与块状数组
    『笔记』矩阵
    『题解』CF28A Bender Problem
    『笔记』数学数论(七)
    『笔记』数学数论(三)
  • 原文地址:https://www.cnblogs.com/haifwu/p/14835333.html
Copyright © 2011-2022 走看看