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-合并两个有序链 ...
随机推荐
- Centos Linux下载rpm软件包(基础环境篇)-从零到无
--时间:2020年10月23日 --作者:飞翔的小胖猪 一.概述 1.1 前言 很多生产环境往往是独立的一张网络不与互联网相通,经常会出现的问题就是应用在部署的时候无法安装配套的依赖包.导致很简单 ...
- video视频控件
<!-- 视频播放内容 --> <!-- autoplay准备就绪会自动播放 --> <!-- controls,要自定义得去掉这个 --> <video ...
- Mysql基础学习第二天
Mysql基础学习第二天 函数 函数:是指一段可以直接被另一段程序调用的程序或代码. 字符串函数 数值函数 日期函数 流程函数 字符串函数 MySQL内置很多字符串函数,常用的几个如下: 函数 功能 ...
- Qt:QSqlDatabase
0.说明 QSqlDatabase类处理与数据库连接相关的操作.一个QSqlDatabase实例就代表了一个连接,连接时要提供访问数据库的driver,driver继承自QSqlDriver. 通过静 ...
- 爬虫之Beautfulsoup模块及新闻爬取操作
今日内容概要 IP代理池的概念及使用 requests其他方法补充 Beautifulsoup模块 避免你自己写正则表达式 利用该模块爬取京东的商品信息 今日内容详细 IP代理池的概念及使用 1.有很 ...
- Tableau学习Step2一数据文件的读取与统计图、表的概述
Tableau学习Step2一数据文件的读取与统计图.表的概述 本文首发于博客冰山一树Sankey,去博客浏览效果更好. 一. 前言 本教程通过一个案例从浅到深来学习Tableau知识 案例概述: 二 ...
- [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Systems"
[翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed ...
- 创建 maven项目时:Cannot resolve Plugin org.apache.maven.plugins:maven-install-plugin报错
Maven在每一次下载jar包的过程中,一旦第一次下载完成后,就会有一个lastUpdate文件,表示该jar包已经下载.下次再检索这个包,也就不会去远程仓库进行下载. 解决办法:找到自己的maven ...
- 从零开始,开发一个 Web Office 套件(10):捕获键盘事件,输入文字
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
- LGP2155题解
lg最优解来写题解啦( 题目大意: 多测: \[\sum_{i=1}^{n!}[\gcd(i,m!)=1] \] 根据 \(\gcd\) 的结论,我们可以得到答案其实是: \[\frac {n!} { ...