2.两数相加--力扣

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

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

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
在这里插入图片描述
原题如上

看来题解1,如下:
在这里插入图片描述
通过使用一个进位值来辅助链表数的相加。

我试着用Java写了如下代码(不完善的地方希望小伙伴给点建议):

package t2;

import java.util.LinkedList;

public class ADDlianbiao {
    public static void main(String[] args) {
        LinkedList<Integer> list1 = new LinkedList<>();//定义链表1
        LinkedList<Integer> list2 = new LinkedList<>();//定义链表2
        //向链表1中加入数据
        list1.add(1);
        list1.add(5);
        list1.add(9);
        //向链表2中加入数据
        list2.add(7);
        list2.add(2);
        list2.add(3);
        list2.add(4);
        //951+4327=5278
        //计算两个链表长度
        int a=list1.size();
        int b=list2.size();
        //为循环做准备
        int jinwei=0;//存储进位
        String jg = "";//将结果转为字符串存储
        //开始相加
        for(int i=0;i<(a>b?a:b);i++){//遍历到最长的链表结束
            //list1.size()>list2.size()
            if (a > b){
                if (i >= b){//为防止下标越界
                    if (jinwei == 0){//进位等于0,后面进位便不会产生,所以直接将数字加在后面就行
                        jg += list1.get(i);
                    }
                    if (jinwei != 0){//进位不等于0时,除了不用list2之外,其余和不越界时一样
                        int m = list1.get(i) + jinwei;
                        jinwei = m / 10;//更新进位数
                        jg +=  (m % 10);//存结果
                    }
                }else {//没越界时,正常加
                    int m = list1.get(i) + list2.get(i) + jinwei;//保证每次循环都可以加上上次的进位数
                    jinwei = m / 10;//更新进位数
                    jg +=  (m % 10);//存结果
                }
            }
            //list2.size()>list1.size()
            if (b > a){
                if (i >= a){
                    if (jinwei == 0){
                        jg += list2.get(i);
                    }
                    if (jinwei != 0){
                        int m = list2.get(i) + jinwei;
                        jinwei = m / 10;//更新进位数
                        jg +=  (m % 10);//存结果
                    }
                }else {//没越界时,正常加
                    int m = list1.get(i) + list2.get(i) + jinwei;//保证每次循环都可以加上上次的进位数
                    jinwei = m / 10;//更新进位数
                    jg +=  (m % 10);//存结果
                }
            }
            //list1.size()=list2.size()
            if (a == b) {
                int m = list1.get(i) + list2.get(i) + jinwei;//保证每次循环都可以加上上次的进位数
                jinwei = m / 10;//更新进位数
                jg +=  (m % 10);//存结果
            }
        }
        //实现字符串的翻转
        StringBuilder sb = new StringBuilder(jg);
        String fjg = sb.reverse().toString();
        System.out.println(fjg);
    }
}

运行结果如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

与Linux的设备树文件(dts)的基础知识【编写和操作】

编写相关 01-双引号中的内容表示字符串,<>中的内容表示数值 示例如下&#xff1a; / {swh_led0 {compatible "swh_leddrv";pin <0x00030001>;};.......};compatible的具体内容为字符串swh_leddrv&#xff0c;而pin的值为数值0x00030001。 操作相关…

STM32第6章、WWDG

一、简介 WWDG&#xff1a;全称Window watchdog&#xff0c;即窗口看门狗&#xff0c;本质上是一个能产生系统复位信号和提前唤醒中断的计数器。 特性&#xff1a; 是一个递减计数器。 看门狗被激活后&#xff0c; 当递减计数器值从 0x40减到0x3F时会产生复位&#xff08;即T6位…

国产fpga nvme ip高速存储方案设计

国产高速存储方案主要是使用nvme ip实现高速存储方案&#xff0c;nvme ip采用纯verilog语言实现&#xff0c;用户拿到nvme ip使用起来也很简单。 先看看效果如 zu7eg板子&#xff0c;这个芯片支持pcie3.0 x4. zynq 7045板子只支持pcie 2.0 x4 速度测试&#xff0c;测试nvme …

《框架程序设计》复习题解析-1

目录 单选题 1.以下关于Maven说法错误的是&#xff1f;&#xff08; &#xff09;。 2.在项目的开发过程中&#xff0c;MyBatis承担的责任是( ) 3.当项目引用依赖的范围设置为以下&#xff08; &#xff09;选项时&#xff0c;表示依赖在编译时是必需的&#xff0c;但在运…

STM32F103的ADC通道映射

ADC通道映射 STM32F103带3个ADC控制器&#xff0c;一共支持23个通道&#xff0c;包括21个外部和2个内部信号源。ADC1控制器最多有18个通道&#xff0c;包括16个外部和2个内部信号源。 ADC1和ADC2的16个外部通道相同&#xff0c;且ADC1和ADC2共用一个系统中断向量&#xff0c;A…

Vue2+OpenLayers使用Overlay实现点击获取当前经纬度信息(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 关键参数&#xff1a; 实现思路&#xff1a; 核心代码&#xff1a; 完整代码&#xff1a; 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 覆盖物&#xff08;Overlay&#xf…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

【芯片封测学习专栏 -- Substrate | RDL Interposer | Si Interposer | 嵌入式硅桥(EMIB)详细介绍】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewSubstrate&#xff08;衬底或基板&#xff09;Substrate 定义Substrate 特点与作用Substrate 实例 RDL Interposer&#xff08;重布线层中介层&a…

基于单片机的无线气象仪系统设计(论文+源码)

1系统方案设计 如图2.1所示为无线气象仪系统设计框架。系统设计采用STM32单片机作为主控制器&#xff0c;结合DHT11温湿度传感器、光敏传感器、BMP180气压传感器、PR-3000-FS-N01风速传感器实现气象环境的温度、湿度、光照、气压、风速等环境数据的检测&#xff0c;并通过OLED1…

【JavaWeb】JavaWeb入门之Tomcat详解

目录 1.Java Web前奏 1.1.C/S结构 1.2.B/S结构 1.3.静态网页和动态网页 1.4.常见的网页 1.5.Web服务器 2.HTTP协议 2.1.HTTP协议概念 2.2.无状态协议 2.3.HTTP1.0和HTTP1.1 2.4.请求协议和响应协议 2.5.请求协议 2.5.1.GET请求 2.5.2.POST请求 2.6.响应协议 1.J…

【SpringBoot】@Value 没有注入预期的值

问题复现 在装配对象成员属性时&#xff0c;我们常常会使用 Autowired 来装配。但是&#xff0c;有时候我们也使用 Value 进行装配。不过这两种注解使用风格不同&#xff0c;使用 Autowired 一般都不会设置属性值&#xff0c;而 Value 必须指定一个字符串值&#xff0c;因为其…

nginx反向代理和负载均衡的区别

1、反向代理&#xff0c;不需要服务器池&#xff0c;直接代理某台服务器 location / {proxy_pass http://192.168.18.201;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr; }proxy_set_header Host $host; …

uniApp通过xgplayer(西瓜播放器)接入视频实时监控

&#x1f680; 个人简介&#xff1a;某大型国企资深软件开发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…

数据结构与算法之二叉树: LeetCode 701. 二叉搜索树中的插入操作 (Ts版)

二叉搜索树中的插入操作 https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/ 描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树返回插入后二叉搜索树的根节点。 输入数据 保…

vue el-table 数据变化后,高度渲染问题

场景&#xff1a;el-table设置了height属性&#xff0c;但是切换查询条件后再次点击查询重新获取data时&#xff0c;el-table渲染的高度会有问题&#xff0c;滚动区域变矮了。 解决办法&#xff1a;使用doLayout方法‌&#xff0c;在表格数据渲染后调用doLayout方法可以重新布局…

代码的形状:重构的方向

大概2周前写了一篇《代码的形状:从外到内的探索与实践》 涵树&#xff1a;代码的形状:从外到内的探索与实践 觉得这个话题还可以继续&#xff0c;它是一个从无形到有形的过程&#xff0c;而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。 我讨论代码的形状&#xff…

检验统计量与p值笔记

一、背景 以雨量数据为例&#xff0c;当获得一个站点一年的日雨量数据后&#xff0c;我们需要估计该站点的雨量的概率分布情况&#xff0c;因此我们利用有参估计的方式如极大似然法估计得到了假定该随机变量服从某一分布的参数&#xff0c;从而得到该站点的概率密度函数&#x…

【Linux】Linux基础命令(二)

locate命令 locate命令可以用于快速查找文件的路径&#xff0c;比如我要查找所有.cpp文件的路径&#xff1a; sudo locate *.cppless 命令 less命令和more命令类似&#xff0c;都是查看文件内容&#xff0c;但less命令更强大 可以使用光标上下&#xff08;左右&#xff09;…

精选2款.NET开源的博客系统

前言 博客系统是一个便于用户创建、管理和分享博客内容的在线平台&#xff0c;今天大姚给大家分享2款.NET开源的博客系统。 StarBlog StarBlog是一个支持Markdown导入的开源博客系统&#xff0c;后端基于最新的.Net6和Asp.Net Core框架&#xff0c;遵循RESTFul接口规范&…

多线程 - wait 和 notify

wait wait(等待)/notify(通知) 线程在操作系统上的调度是随机的 多个线程&#xff0c;需要控制线程之间执行某个逻辑的先后顺序&#xff0c;就可以让后执行的逻辑&#xff0c;使用wait&#xff0c;先执行线程&#xff0c;完成某些逻辑之后&#xff0c;通过notify唤醒对应的wait…