当前位置:首页 > 算法 > 正文内容

leetcode - 2两数相加

淙嶙6年前 (2020-08-21)算法2711

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
先上代码:

/**
  *已知的代码:
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = new ListNode(0);
        ListNode next = head;
        //进位
        int carry = 0;
        while(l1 != null || l2 != null || carry !=0){
            int v1 = l1 == null ? 0 : l1.val;
            int v2 = l2 == null ? 0 : l2.val;
             int v = v1 + v2 + carry;
             carry = v / 10;
             next.next = new ListNode(v%10);
             next = next.next;
             l1 = l1 != null ? l1.next : null;
             l2 = l2 != null ? l2.next : null;
        }
        return head.next;
    }
}

依次取两个链表的 个位 十位 百位 … ,分别相加(个位对个位 十位对十位…) ,保留进位,进位参与下一个高位运算(carry),将结果保存在新的链表返回。

相关文章

多线程依次顺序轮询执行方案

多线程依次顺序轮询执行方案

多线程轮询执行问题解决方案: 比如有三个线程 thread1 ,thread2, thread3。 规则:thread1运行 -> thread2运行 -> thread3 -> t...

红黑树

红黑树

红黑树是一种自平衡的二叉查找树。除了符合二叉查找树的基本特征外,还具有如下特征: 1.每个节点是红色或黑色。 2.根节点是黑色。 3.每个叶子节点都是黑色的空节点(NIL节点)。[注意:这里...

leetcode - 3无重复字符的最长子串

leetcode - 3无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1: 输入: “abcabcbb”输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入:...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。