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

leetcode - 2两数相加

淙嶙5年前 (2020-08-21)算法2202

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 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),将结果保存在新的链表返回。

相关文章

链接地址的签名生成过程

链接地址的签名生成过程

签名的作用校验url中对外暴露的参数传输过程中是否被篡改。生成url的时候,通过对其中的[全部或部分]参数+私钥进行MD5加密处理生成一个签名,将生成的签名一起放入url中,这样一个带有签名的url生...

Java transient关键字使用小记

Java transient关键字使用小记

1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。 2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被tran...

单点登录终极方案之 CAS 应用及原理

单点登录终极方案之 CAS 应用及原理

Cookie的单点登录的实现方式很简单,但是也问题颇多。例如:用户名密码不停传送,增加了被盗号的可能。另外,不能跨域! 1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理:将...

发表评论

访客

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