【LetCode 算法修炼】Add Two Numbers

简介: 版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51068525 ...
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51068525

题目

You are given two linked lists representing two non-negative numbers. 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.

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

Subscribe to see which companies asked this question

说明:

题目的意思是给出两个整数,它们分别倒序存在链表中,将将它们的和也倒序存在链表中返回。

如例子就是求 342 + 465 = 806,将806倒序存储在链表,返回链表。

解题思路:

遍历两个链表,将val相加的值存到l1,flag 变量作为进位,在结束的时候判断是否有进位,有则加上flag。如果最后一个节点有进位的话则需要new一个节点。

代码:

public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
       if (l1 == null) return l2;
       if (l2 == null) return l1;
       
       ListNode L = l1;
       ListNode A = new ListNode(0);
       
       A.next = l1;
       int flag = 0;
       while(l1 != null && l2!= null)
       {
           l1.val =l1.val +l2.val +flag;
           flag = l1.val/10;
           l1.val = l1.val % 10;
           A = l1;
           l1 = l1.next;
           l2 = l2.next;
       }
       
       if(l2 != null)
       {
           A.next = l2;
           l1 = l2;
       }
       while (l1 != null) {  
            l1.val += flag;  
            flag = l1.val / 10;  
            l1.val = l1.val % 10;  
            A = l1;  
            l1 = l1.next;  
        }  
         if (flag > 0) {  
            ListNode node = new ListNode(1);  
            A.next = node;  
        }  
          
        return L;
    }
}



相关文章
|
存储 缓存 算法
【手绘算法】力扣 2 两数相加(Add Two Numbers)
Hi,大家好,我是Tom。一个美术生转到Java开发的程序员。今天给大家分享的是力扣题第2题,求两数相加。在解题过程中,也会手写一些伪代码。当然,如果想要完整的源码的话,可以到我的个人主页简介中获取。 这道题属于中等难度,通过率只有42%。
324 0
|
算法 Java 人工智能
【LetCode算法修炼】Two Sum
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51068379 ...
816 0
|
12月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
956 0
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
574 2
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
424 6
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
496 3
|
12月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
544 8
|
12月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
715 8
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
473 14
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。

热门文章

最新文章