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

NC40 链表相加(二)

文章目录

  • 一、读题
  • 二、思路
  • 三、代码实现:

一、读题

    题目来源: 链表相加

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b?tpId=196&tqId=37147&ru=/exam/oj

    
在这里插入图片描述

二、思路

    思路很简单:
第一种:模拟字符串数字相加,把链表遍历一遍,然后把对应的数据取出来组合成为字符串,然后再相加,再将一位一位的数字放入链表,最终还要逆置一下链表,

    
第二种:将链表逆置,因为这是一个单链表,只能顺着取数据(高位到低位),不能逆过来取数据,但是我们的加法只能够从低位到高位计算,因此我们可以将链表逆置,这样子我们从左往右取就能够实现从低位开始取,但是此时拿到的还是逆序的,我们每计算一位就将数据存储进入链表,最后再逆置即可
    
    这道题难就难在逆置链表这一方面,主包个人认为这一道题本质上是在考链表的逆置
在这里插入图片描述
    链表逆置我们可以先创建一个头节点,然后再采用头插法将剩下的元素插入,先将要新插入的节点的next指向head的next,然后head的next再指向要新插入的节点,这样就可以避免丢失节点的情况
    但是在编写逆置链表的方法的时候还需要注意头节点的保留,避免逆置到后面找不到头节点了
需要注意一点,在判断当前节点是否为空后,如果不为空就进行计算,算完就要将当前节点移动到下一个节点,一定不能在外面移动,一定不能在外面移动,一定不能在外面移动,重要的事情说三遍,如果在外面移动的话会出现越界的情况,当head为空之后仍然使用head.next的时候就会出现越界的情况

三、代码实现:

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;*   public ListNode(int val) {*     this.val = val;*   }* }*/public class Solution {public ListNode func(ListNode pHead) {if (pHead == null)return null;ListNode cur = pHead;ListNode pre = null;while (cur != null) {//断开链表,要记录后续一个ListNode temp = cur.next;//当前的next指向前一个cur.next = pre;//前一个更新为当前pre = cur;//当前更新为刚刚记录的后一个cur = temp;}return pre;}public ListNode addInList (ListNode head1, ListNode head2) {head1 = func(head1);head2 = func(head2);ListNode cur1 = head1, cur2 = head2;ListNode ans = new ListNode(0) , prev = ans;int flag = 0;while (cur1 != null || cur2 != null || flag != 0) {if (cur1 != null) {flag += cur1.val;cur1 = cur1.next;}if (cur2 != null) {flag += cur2.val;cur2 = cur2.next;}prev = prev.next = new ListNode(flag % 10);flag /= 10;}return func(ans.next);//最后一定要记得是从头节点的下一个节点进行逆置}
}
http://www.dtcms.com/a/473899.html

相关文章:

  • 网安面试题收集(3)
  • JetLinks设备接入的认识与理解
  • 从HashMap到ConcurrentHashMap深入剖析Java并发容器的演进与实战
  • 做一组静态页面网站多少钱网站源码上传到哪个文件夹
  • 威海市城乡建设局网站网络整合营销服务商
  • 从报头到路由器——【网络编程】详解 IP 协议:报头字段、路由器功能、网段划分和分片传输
  • 网站验证北京建网站开发
  • 设计模式篇之 装饰器模式 Decorator
  • 虚幻引擎虚拟制片入门教程 之 创建项目及启用插件
  • 淳安县建设网站王璞网站开发实战答案
  • Linux禁用自带键盘和触摸板(无需每次开机重置)
  • 149、【OS】【Nuttx】【周边】效果呈现方案解析:VSCode 打开外部链接(二)
  • Apache Commons IO:文件流处理利器,让Java IO操作更简单
  • 哪个网站做简历免费自己做免费网站
  • 医院预约挂号|基于Java+vue的医院预约挂号系统小程序的设计与实现(源码+数据库+文档)
  • 翻转二叉树---超全详细解
  • AI智能体全球应用调查报告:从“对话”到“做事”的变革
  • Linux网络之----网络编程
  • [Power BI] CALCULATETABLE函数
  • 3494. 酿造药水需要的最少总时间
  • 沐风老师3DMAX科研绘图插件DNA生成器使用方法详解
  • 宁波做网站gs什么是网络营销的职能
  • AI编程工具(Cursor/Copilot/灵码/文心一言/Claude Code/Trae)AI编程辅助工具全方位比较
  • FastGPT入门实战
  • 数据结构笔试核心考点
  • 用python做购物网站万网搜官网
  • 创建qq网站如何做网站流量分析报表
  • Docker实战:从基础镜像到Nginx定制
  • 什么是NoSQL?
  • 北京网站建设公司代理备份整个网站