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

【d52】【Java】【力扣】19.删除链表的倒数第N个节点

思路

1.遍历数组,统计个数,记为total

2.计算出需要被删除的节点 是正数第几个,记做order

3.遍历到order-1,,然后执行删除下一个节点的操作

这里遍历到order-1,是因为想要删除一个节点,需要操作的是它前一个节点的next

代码

/**
 * 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 removeNthFromEnd(ListNode head, int n) {
        
            //获得总个数
            //是做判断,判断是不是空,
            //所以先判断,然后才能++,所以最开始就不能是0,因为并没有进行判断
            int total=0;
            ListNode cur=head;
            while(cur!=null){
                total++;
                cur=cur.next;
            }

            //得到顺数第几个 用order表示
            int order=total+1-n;

            //遍历,走到 order-1的位置,然后执行删除下一个的操作
            //做统计 统计当前共有几个,最开始指针指向head的时候已经有一个,所以初始值为1
            cur=head;
            int now=1;
            while(now<order-1){
                now++;
                cur=cur.next;
            }
            //来到order-1的位置,删除后面一个元素
            //先排除无法删除的情况
            if (cur.next==null) {
                head=null;
                return head;
            }
            //特殊删除情况。删除头节点
            if (order == 1) {
                head=head.next;
                return head;
            }
            cur.next=cur.next.next;
            return head;
    }
}

记录

总结

指针移动 并且count++ 之类的问题,,怎么个流程:

这得看是在做什么,

指针定义为cur,指针最开始指向首元节点

1.如果这个count是用来统计链表的个数,

统计个数大概思路:先判断是否为空,如果不为空,就c++,

所以,cur指向头节点,还未判断时,count初始值应设置=0

流程:

count=0

判断是否为空,不为空,count++

2.如果是在判断当前节点是否为x序号的节点

大概思路:指针指向这个节点,循环判断这个节点是不是x节点

所以指针的初始值就应该为1


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

相关文章:

  • Python | Leetcode Python题解之第432题全O(1)的数据结构
  • windows端后端运行python程序,类似nohup
  • 大数据Flink(一百二十四):案例实践——淘宝母婴数据加速查询
  • 优青博导团队携手提供组学技术服务、表观组分析、互作组分析、遗传转化实验、单细胞检测等全方位生物医学支持
  • 微服务--ES(Elasticsearch)
  • 如何在谷歌浏览器上玩大型多人在线游戏
  • 【软考】结构化分析方法概述
  • 车载视频监控:安全生产与管理的新趋势
  • 笔记整理—linux进程部分(1)进程终止函数注册、进程环境、进程虚拟地址
  • 基于顺序表的通讯录(纯代码)
  • 「漏洞复现」誉龙视音频综合管理平台 RelMedia/FindById SQL注入漏洞
  • 【大模型-驯化】成功解决载cuda-11.8配置下搭建swift框架
  • VSCode rust文件中的api点击无法跳转问题
  • Request 原理
  • 的使用和内联函数
  • 【Spring Cloud】Spring Cloud 概述
  • 【计算机网络 - 基础问题】每日 3 题(十七)
  • 《JKTECH柔性振动盘:原理与多行业应用》东莞市江坤自动化科技有限公司
  • TOF系列—深度图滤波
  • 手搓一个Agent#Datawhale 组队学习Task3