【Leetcode】链表中两数之和(模拟加法器)(击败100%)

news2024/9/22 13:31:03

step by step.

题目:

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1] 

思路:

给我感觉是:模拟加法器+合并链表

很多要注意的地方:

1.进位

2.链表结束后另一个链表还有数(且此时还在进位,不能直接拼接链表)

3.最后去除多余的0

代码:

/**
 * 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 ans = new ListNode(0);
         ListNode re = ans;
         if(l1.val==0&&l1.next==null&&l2.val==0&&l2.next==null) return ans;
         if(l1.val==0&&l1.next==null) return l2;
         if(l2.val==0&&l2.next==null) return l1;
         int jinwei = 0;//进位标记
        while(l1!=null&&l2!=null){
            int res = l1.val+l2.val+jinwei;
            //System.out.println(l1.val+"+"+l2.val+"="+res);
            if(res>=10) jinwei=1;
            else jinwei=0;
            ans.next=new ListNode(res%10);
            //System.out.println("jinwei:"+jinwei);
            //System.out.println("res%10:"+res%10);
            ans=ans.next;
            l1=l1.next;
            l2=l2.next;
        }
       while(l1!=null){
           //System.out.println("l1");
            l1.val=l1.val+jinwei;
            if(l1.val>=10){
                jinwei=1;
                l1.val%=10;
            }else jinwei=0;
            ans.next=l1;
            ans=ans.next;
            //System.out.println(":"+l1.val);
            l1=l1.next;
           
        }
       while(l2!=null){
            l2.val=l2.val+jinwei;
            //System.out.println("l2");
            if(l2.val>=10){
                jinwei=1;
                l2.val%=10;
            }else jinwei=0;
            //System.out.println(":"+l2.val);
            ans.next=l2;
            ans=ans.next;
            l2=l2.next;
            
       }
       if(jinwei==1) ans.next=new ListNode(1);
       ans=re.next;
       ListNode zero=new ListNode(1);
       boolean isZero=false;
       while(ans.next!=null){
           //System.out.println("ans"+ans.val+"进入循环");
           if(ans.next.val==0&&isZero==false){
               //System.out.print("1 ");
               //遇到第一个0
               isZero=true;
               zero=ans;
           }
           ans=ans.next;
       }
       if(isZero&&ans.val==0)
           zero.next=null;
         return re.next;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/855533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年下半年软考初级程序员备考攻略

初级程序员考试科目包含基础知识和应用技术,各科目的考试形式都是笔试,满分均为75分。程序员考试需要各科目在一次考试中均及格才算合格,单科及格的成绩不保留,也不能转移到下次考试时使用。 这里给大家理清一个程序员考试的相关…

iOS开发-JsonModel的学习及使用

IOS JsonModel的学习及使用 当我们从服务端获取到json数据后的时候,我们需要在界面上展示或者保存起来,下面来看下直接通过NSDictionary取出数据的情况。 NSDictionary直接取出数据的诟病。 NSString *name [self.responseObj objectForKey:"nam…

Vue3弹出确认(Popconfirm)

效果如下图:在线预览 APIs 参数说明类型默认值必传title确认框的标题string | slot‘’falsedescription确认框的内容描述string | slot‘’falsecontent展示的文本string | slot‘’falseicon自定义弹出确认框 Icon 图标string | slot‘’falsemaxWidth弹出确认框…

《合成孔径雷达成像算法与实现》Figure3.8

与图3.7的代码区别只在于原始信号的表达式对了一个时间偏移 代码复现如下: clc clear all close all%参数设置 TBP 100; %时间带宽积 T 10e-6; %脉冲持续时间 tc …

SEED-Bench: Benchmarking Multimodal LLMs with Generative Comprehension

本文是LLM相关的文章,针对《SEED-Bench: Benchmarking Multimodal LLMs with Generative Comprehension》的翻译。 SEED-基准:用生成理解对多模式LLM进行基准测试 摘要1 引言2 相关工作3 SEED-Bench 摘要 基于强大的大型语言模型(LLM&#…

【SpringBoot框架篇】33.优雅集成i18n实现国际化信息返回

文章目录 1.简介2.MessageSource配置和工具类封装2.1.配置MessageSource相关配置2.2.配置工具类2.3.测试返回国际级文本信息 3.不优雅的web调用示例(看看就行,别用)4.优雅使用示例4.1.错误响应消息枚举类4.2.ThreadLocal工具类配置4.2.1.ThreadLocal工具类数据封装4…

不再限制CPU,这才是Win11完全体的样子嘛

从 Win11 刚问世时,微软就宣称将给其许多 Win10没有也不会支持的新功能。 其中 Android 子系统的支持算得上是最期待,但结果难免有些失望的部分。 先不说使用怎么样,光是安装就困难重重。 绕过限制升级了 Win11 ,但没想到安装 W…

idea双击启动无效,idea卡顿问题

idea双击启动无效:大概率是关机时没有正确关闭idea,再次开机导致无法正常启动idea 1.通过任务管理器杀死idea进程后重启idea 2.需要修改配置 打开 (以各自电脑实际为准)C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.1\bin&am…

LabVIEW使用图像处理检测显微图像中的白血病

LabVIEW使用图像处理检测显微图像中的白血病 人体最重要的部分是血液,因为它使人活着。它执行许多重要功能,例如转移氧气,二氧化碳,矿物质等。血液量不足会极大地影响新陈代谢,如果不及早治疗,这可能是非常…

接口自动化测试框架及接口测试自动化主要知识点

接口自动化测试框架: 接口测试框架:使用最流行的Requests进行接口测试接口请求构造:常见的GET/POST/PUT/HEAD等HTTP请求构造 接口测试断言:状态码、返回内容等断言JSON/XML请求:发送json\xml请求JSON/XML响应断言&…

c语言经典例题讲解(输出菱形,喝汽水问题)

目录 一、输出菱形 二、喝汽水问题 方法1:一步一步来 方法二:直接套公式 一、输出菱形 输出类似于下图的菱形: 通过分析:1、先分为上下两部分输出 2.在输出前先输出空格 3.找规律进行输出 可知,可令上半部分lin…

Python Opencv实践 - 图像属性相关

import numpy as np import cv2 as cv import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) plt.imshow(img[:,:,::-1])#像素操作 pixel img[320,370] print(pixel)#只获取蓝色通道的值 pixel_blue img[320,370,0]…

openwrt dns ssh相关问题

DHCP/DNS中 的技术叫dnsmasq 可配置hosts和 自定义挟持域名配置 image.png image.png 拦截优先级为挟持域名最高,另外需要重启服务方可生效,在系统,启动项中重启dnsmasq ssh 使用root用户SSH登录服务器出现Access Denied错误 只输入root就出现…

Python-OpenCV中的图像处理-图像金字塔

Python-OpenCV中的图像处理-图像金字塔 图像金字塔高斯金字塔拉普拉斯金字塔 金字塔图像融合 图像金字塔 同一图像的不同分辨率的子图集合,如果把最大的图像放在底部,最小的放在顶部,看起来像一座金字塔,故而得名图像金字塔。cv2…

C语言的动态分配空间C++的动态分配空间问题

动态分配空间 C:1、malloc 2、calloc C:new运算符 一 malloc malloc(): 这个函数用于分配一块指定大小的内存块,并返回一个指向该内存块的指针。语法如下: void* malloc(size_t size); 示例: int* ptr …

欧拉操作系统添加磁盘

1、查看磁盘空间 fdisk -l 2、创建新磁盘分区 fdisk /dev/vda 欢迎使用 fdisk (util-linux 2.37.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 This disk is currently in use - repartitioning is probably a bad idea. Its r…

(力扣)用两个栈实现队列

这里是栈的源代码:栈和队列的实现 当然,自己也可以写一个栈来用,对题目来说不影响,只要符合栈的特点就行。 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、pe…

c++(空间配置器)[32]

空间配置器 一级空间配置器 || 二级空间配置器 默认先走二级然后判断 二级空间配置器 一个指针指向start_free然后start_free向后移动,相当于哈希桶的头删和头插 8byte:切大补小 C的二级空间配置器按照8字节(或者更大的倍数)切分…

《流浪地球3》预告片流出?!网友整活竟被郭导翻牌、央视点赞!

年初《流浪地球2》掀起了一股“科幻热”,而这股热潮直至今日还只增不减。这不,一位名叫“数字生命卡兹克”的博主已经开始“整活”了!他利用AI技术,自制了《流浪地球3》的预告片,并迅速火遍全网。 更牛的是&#xff0c…

apple pencil二代值不值得买?好用的苹果平替笔推荐

自从苹果的Pencil系列问世以来,在国内电容笔市场的销量大增,而苹果的Pencil系列,其的售价更是贵的让人望而却步。现在市面上有很多平替的电容笔,都能取代苹果的Pencil,用来做笔记、做批注、写写字都绰绰有余了。在这里…