Leetcode刷题之链表增加头结点的前缀节点
链表之增加头结点的前缀节点
- 在许多链表题中往往需要在题目给的头结点之前增加一个前缀节点
- 通常在删除链表和头结点需要交换时需要用到这一操作
- 因为增加这个节点就避免了对删除头结点这种特殊情况的特殊处理
- 而且往往在声明一个前缀节点之后再复制一个,前者保存不动用于最后结果返回,后者参与之后的操作
 Leetcode203删除链表元素
- 给你一个链表的头节点 head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回 新的头节点 。
- 输入:head = [1,2,6,3,4,5,6], val = 6
- 输出:head = [1,2,6,3,4,5,6], val = 6
 public ListNode removeElements(ListNode head, int val) {
        ListNode prefinalHead=new ListNode(-1,head);
        ListNode preHead=prefinalHead;
        while(head!=null){
            if(head.val==val){
                preHead.next=head.next;
            }else{
                preHead=preHead.next;
            }
            head=head.next;
        }
        return prefinalHead.next;
    }
Leetcode24两两交换链表中的节点
- 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)
- 输入:head=[1,2,3,4]
- 输出:[2,1,4,3]
   public ListNode swapPairs(ListNode head) {
        if(head==null){//没元素
            return null;
        }
        if(head.next==null){//只有一个元素
            return head;
        }
       ListNode pre=head;
       ListNode post=head.next;
       ListNode finallastpre=new ListNode(-1,head);
       ListNode lastpre=finallastpre;
       while(pre!=null){
           if(post==null){//最后只剩一个节点
                pre=pre.next;
           }else{
               ListNode temp=post.next;
               post.next=pre;
               lastpre.next=post;
               pre.next=temp;
               lastpre=pre;
               pre=pre.next;
               if(temp!=null){
                    post=temp.next;
               }else{
                   post=null;
               }
           }
       }
        return finallastpre.next;
    }
Leetcode19删除链表的倒数第N个结点
- 给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点
- 输入:head=[1,2,3,4,5],n=2
- 输出:[1,2,3,5]
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode prefinalHead=new ListNode(-1,head);
        ListNode preHead=prefinalHead;
        ListNode fast=head;
        ListNode slow=head;
        for(int i=1;i<n;i++){
            fast=fast.next;
        }
        while(fast.next!=null){
            slow=slow.next;
            fast=fast.next;
            preHead=preHead.next;
        }
        preHead.next=slow.next;
        return prefinalHead.next;
    }
Leetcode刷题之链表增加头结点的前缀节点的更多相关文章
- LeetCode刷题总结-链表
		LeetCode刷题总结-链表 一.链表 链表分为单向链表.单向循环链表和双向链表,一下以单向链表为例实现单向链表的节点实现和单链表的基本操作. 单向链表 单向链表也叫单链表,是链表中最简单的 ... 
- 说了你可能不信leetcode刷题局部链表反转D92存在bug,你看了就知道了
		一.题目描述 找出数组中重复的数字 > 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. ... 
- Leetcode刷题之链表中箭头转移和内容转移
		链表中箭头转移和内容转移 链表中特别注意xxx.next=xxx 和xxx=xxx的区别 xxx.next=xxx表示将指针(箭头)转移 xxx=xxx表示将内容转移 Leetcode206翻转链表 ... 
- leetcode刷题记录——链表
		使用java实现链表 单向链表 双向链表 单向循环链表 双向循环链表 题目记录 160.相交链表 例如以下示例中 A 和 B 两个链表相交于 c1: A: a1 → a2 c1 → c2 → c3 B ... 
- leetCode刷题(使用链表做加法)
		Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = ... 
- C#LeetCode刷题之#671-二叉树中第二小的节点(Second Minimum Node In a Binary Tree)
		问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4100 访问. 给定一个非空特殊的二叉树,每个节点都是正数,并且每 ... 
- C#LeetCode刷题-树
		树篇 # 题名 刷题 通过率 难度 94 二叉树的中序遍历 61.6% 中等 95 不同的二叉搜索树 II 43.4% 中等 96 不同的二叉搜索树 51.6% 中等 98 验证二叉搜索树 ... 
- LeetCode刷题 链表专题
		链表专题 链表题目的一般做法 单链表的结构类型 删除节点 方法一 方法二 增加节点 LeedCode实战 LC19.删除链表的倒数第N个结点 解法思路 LC24.两两交换链表中的节点 解法思路 LC6 ... 
- C#LeetCode刷题-链表
		链表篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 19 删除链表的倒数第N个节点 29.4% 中等 21 合并两个有序链表 C#LeetCode刷题之#21-合并两个有序链 ... 
随机推荐
- 【C# IO 操作 】IFormatProvider接口|IFormattable 接口  格式化接口
			IFormatProvider接口获取一个满足要求的个格式化器. 方法 object? GetFormat(Type? formatType);GetFormat方法主要提供一个满足指定要求的对象,该 ... 
- Pycharm:注释、删除所有注释
			1.# 单行注释 2. ''' 多行注释 ''' 3.删除所有注释 CTRL+R进入替换模式,勾选右上角正则表达式,然后在搜索框输入 #.*,Replace All即可 
- 【计题04组01号】Java面试问答题
			写作前面 本书内容摘自<Java程序员面试笔试宝典> 很多同学在面试时其实有个误区,认为准备的东西越详细越好 其实不是,就和批试卷一样,写长篇大论其实并不会必然加分 老师阅卷时间有限只会抓 ... 
- C# HttpClient类库
			示例代码: 1 using System.Net.Http; 2 using System.Net.Http.Headers; 3 using System.Threading.Tasks; 4 5 ... 
- 微服务从代码到k8s部署应有尽有系列(十二、链路追踪)
			我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ... 
- MySQL集群之Galera Cluster
			mysql cluster集群 Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别 ... 
- PHP日常错误总结
			session问题 问题描述 初到公司开发的项目在本地测试没有问题,部署到线上之后出来验证码一直错误,或者是CSRF token mismatch. 这些问题都是和session有关系,打开两个页面, ... 
- php 23种设计模型 - 工厂模式
			工厂模式(Factory) 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建 ... 
- DOS命令基础
			DOS命令 打开CMD win+R,输入cmd. 桌面任何地方按住shift+鼠标右键 ,点击powershell. 我的电脑文件路径前cmd+空格. 开始+系统. 关闭CMD alt+空格+C. 常 ... 
- netty系列之:netty中各不同种类的channel详解
			目录 简介 ServerChannel和它的类型 Epoll和Kqueue AbstractServerChannel ServerSocketChannel ServerDomainSocketCh ... 
