当前位置: 首页 > article >正文

【leetcode hot 100 2】两数相加

解法一:申请三个指针,分别指向l1、l2、new_l。先设置第一个节点;再l1、l2循环设置后续节点;若某一条链未结束,继续循环设置;若最后enter1(下一位是否进1)仍为真,则多了一位还要新加一位1。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode sum_list = new ListNode();
        ListNode p1 = l1.next, p2 = l2.next, ps = sum_list;
        int sum = l1.val+l2.val;
        boolean enter1 = sum>=10 ? true : false;
        
        // 先设置第一个节点
        sum_list.val = sum%10;
        sum_list.next = null;
        
        // 设置后续节点
        while(p1!=null && p2!=null){
            sum = enter1 ? p1.val+p2.val+1 : p1.val+p2.val;
            enter1 = false;
            if(sum >= 10){
                enter1 = true;
            }
            ListNode temp = new ListNode();
            temp.val = sum%10;
            temp.next = ps.next;
            ps.next = temp;
            ps = ps.next;
            p1 = p1.next;
            p2 = p2.next;
        }

        // 某一条链未结束
        p1 = p1!=null ? p1 : p2;
        while(p1!=null){
            sum = enter1 ? p1.val+1 : p1.val;
            enter1 = false;
            if(sum >= 10){
                enter1 = true;
            }
            ListNode temp = new ListNode();
            temp.val = sum%10;
            temp.next = ps.next;
            ps.next = temp;
            ps = ps.next;
            p1 = p1.next;
        }

        // 多了一位,还要进1
        if(enter1){
            ListNode temp = new ListNode();
            temp.val = 1;
            temp.next = ps.next;
            ps.next = temp;
        }
        return sum_list;
    }
}

http://www.kler.cn/a/580184.html

相关文章:

  • volatile 在 JVM 层面的实现机制
  • 时序分析
  • Hadoop安装文件解压报错:无法创建符号链接。。。
  • golang从入门到做牛马:第三篇-Go程序的“骨骼架构”
  • Jetson Xavier NX安装CUDA加速的OpenCV
  • Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器
  • 安当TDE透明加密技术:为Manus大模型构建用户会话数据保护的“安全金库”
  • 软件工程:软件需求之需求分析方法
  • 深入理解string:从模拟实现看本质
  • 机器学习之KMeans算法
  • CI/CD—Jenkins配置Poll SCM触发自动构建
  • JSON.parse(JSON.stringify())深拷贝不会复制函数
  • 数据库1-2章
  • 【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢
  • C++ 算法竞赛STL以及常见模板
  • 优选算法系列(1. 双指针_上)
  • DICOM医学影像脱敏技术应用的重要性及其实现方法详解
  • [Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘
  • Math 类的核心 API
  • BERT(Bidirectional Encoder Representations from Transformers)的序列分类模型,简单学习记录