每日一练 两数相加问题(leetcode)

原题如下:

这道题目是一道链表题,我们对于这种链表类,很显然我们最后输出的是初始节点,所以我们要保留我们的初始头指针,那么我们的第一步一定是把头指针保留一份,然后再让头指针往后进行操作。那么我们进行什么操作呢,很简单,就是把l1和l2的对应内容加起来就行了,那么我们就面临这样几个问题。

第一,加的太“多”了,什么叫加多了呢,就是我们的和超过9了,这样的话显然我们要进行进位,我们进位后的那个数等于什么呢?显然是等于我们的和取余10,那么怎么表示我们后面一个要进位加1呢?我们可以再做一个进位指针,标记为0时表示没有进位,为1时表示已经进位(显然我们这里只能是进1)。那么我们之后的和其实等于l1+l2+进位指针的值,综合起来我们一开始把进位指针设为0,那么我们所有的和都可以为l1+l2+进位指针的值。

第二,加的太“少”了,什么意思呢?就是当l1和l2为空值的时候,我们是拿不到我们的val值的,所以这个时候我们人工设为0.

第三,l1和l2都为null,我们还要进位1,这个时候怎么办呢?显然我们只需要把我们的答案输出链表末尾加上一个1即可。

以下是代码(java)实现:

/*** 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 answerpre = new ListNode(0) ;ListNode answer = answerpre ;int jinzhi = 0 ;while(l1 != null || l2 != null){int x = l1 == null ? 0 : l1.val ;int y = l2 == null ? 0 : l2.val ;int ans = x + y + jinzhi ;jinzhi = ans/10 ;ans = ans % 10 ;answer.next = new ListNode(ans) ;answer = answer.next ;if(l1 != null){l1 = l1.next ;}if(l2 != null){l2 = l2.next ;}}if( jinzhi == 1 ){answer.next = new ListNode(1) ;answer = answer.next ;}return answerpre.next ;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java子集(力扣Leetcode78)

子集 力扣原题链接 问题描述 给定一个整数数组 nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。可以按任意顺序返回解集。 示例 示例 1: 输入:nums [1,2,3] 输出&#x…

KubeSphere 社区双周报|2024.03.15-03.29

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.03.15-03.29…

Java8之接口默认方法

Java8之接口默认方法 一、介绍二、代码1、接口2、实现类3、测试代码4、效果 一、介绍 在Java8中,允许为接口方法提供一个默认的实现。必须用default修饰符标记这样一个方法。默认方法也可以调用其他方法 二、代码 1、接口 public interface PersonService {void…

【CTFshow 电子取证】套的签到题

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

GooleNet神经网络介绍

一、简介 GoogleNet,也称为GoogLeNet,是谷歌工程师设计的一种深度神经网络结构,它在2014年的ImageNet图像识别挑战赛中取得了冠军。该神经网络的设计特点主要体现在其深度和宽度上,通过引入名为Inception的核心子网络结构&#x…

Machine Learning机器学习之数据可视化

目录 前言 一、 数据预处理与清洗 二、常见可视化技术 三、可视化工具和平台 博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者…

electron+VUE Browserwindow与webview通信

仅做记录 前言: electronVUEVITE框架,用的是VUE3.0 主进程定义:用于接收webview发送的消息 ipcMain.on(MyWebviewMessage, (event, message) > {logger.info(收到webmsg message)//转发给渲染进程}) porelaod/webPreload.js定义 cons…

深圳区块链交易所app系统开发,撮合交易系统开发

随着区块链技术的迅速发展和数字资产市场的蓬勃发展,区块链交易所成为了数字资产交易的核心场所之一。在这个快速发展的领域中,区块链交易所App系统的开发和撮合交易系统的建设至关重要。本文将探讨区块链交易所App系统开发及撮合交易系统的重要性&#…

【Spring源码】WebSocket做推送动作的底层实例

一、前瞻 Ok,开始我们今天的对Spring的【模块阅读】。 那就挑Web里的WebSocket模块,先思考下本次阅读的阅读线索: WebSocket在Spring里起到什么作用这个模块采用了什么设计模式我们都知道WebSocket可以主动推送消息给用户,那做推…

大家快来听,分享一个寄快递省钱赚钱的方法哦!

大家再寄快递的时候,会有很多种方法来供我们选择,可以直接去驿站寄快递,但是这样是不是想的略微麻烦了,可以在官网上下单,快递员上门取件,但是价格也是不便宜的吧,如果是公司一下子大批量的寄件…

Linux系统常用命令

Linux系统常用命令 文章目录 Linux系统常用命令一、系统管理类二、文件与目录管理类|三、文件与目录管理类||四、网络管理类五、磁盘管理类六、Oracle常用命令七、QData常用命令 一、系统管理类 二、文件与目录管理类| 三、文件与目录管理类|| 四、网络管理类 五、磁盘管理类 六…

量化交易入门(二十八)什么是布林带,量化中怎么使用

什么叫布林带 布林带(Bollinger Bands)是一种常用的技术分析指标,由约翰布林(John Bollinger)于20世纪80年代开发。它由三条线组成:中轨(通常为20日移动平均线)、上轨(中…