本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言
:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言
,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨
.但小编初心是能让更多人能接受我们这个概念
!!!
前言
在上一篇文章中
我们讲解了
- 寻找链表的
中间结点
: 用快慢指针
的速度差解决 中点问题 的理解
- 判断链表是否带环: 因为
环
,快慢直接总会一点一点相遇的 快慢指针 的熟悉
- 返回链表倒数第
k
个节点: 更扩展了,快慢指针
也不一定先一起走,也有可能 快指针 先走,慢指针 再跟着的思想
而今天我们主要讲解 “三指针” 在链表面试题中运用
下面让小编结合具体的题目,给小伙伴细细道来吧 💖 💖 💖 💖
目录
- 反转链表
- 链表的回文结构
一. 反转链表
反转链表题目链接
1. 题目描述
2. 解题思路
- 首先我们声明 三个引用类型 cur head curN ,先让
cur
置为null
head
为头节点,curN
为头结点的下一个节点
- 先讲
head
连接cur
接着我们让cur
走到head
,head
走到curN
curN
走到下一个节点 ,循环往复,直到 curN 到 null
3. 题解代码(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 reverseList(ListNode head) {
if(head==null) {
return head;
}
ListNode cur=head.next;
head.next=null;
while(cur != null) {
ListNode curN=cur.next;
cur.next=head;
head=cur;
cur=curN;
}
return head;
}
}
鱼式疯言
简单来说
三指针法
也叫 头插法
一个指针
curN
带头 ,后面两个指针
让 头变成尾 ,这便是 三指针 头插 法 的含义
二. 链表的回文结构
1. 题目描述
链表的回文结构题目链接
2. 解题思路
- 首先 结合我们学过的 快慢指针法 找到
中间
位置
什么 💥💥💥 有小伙伴不知道 快慢指针法 别急别急,不懂的小伙伴查看下面链接哦
快慢指针法
- 然后在中间位置进行
三指针法
进行头插
操作
- 然后首尾
相反
方向一起走,开始判断首尾
是否 相同 ,直到相遇
<1>. 节点数为 偶数 时
<2>. 节点数为 奇数 时
3. 题解代码(Java)
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class PalindromeList {
public boolean chkPalindrome(ListNode A) {
if(A==null) {
return false;
}
ListNode dev=A;
ListNode fast =A,slow=A;
while(fast != null && fast.next != null) {
slow=slow.next;
fast=fast.next.next;
}
ListNode cur=slow.next;
while(cur != null) {
ListNode Ncur=cur.next;
cur.next=slow;
slow=cur;
cur=Ncur;
}
while(A != slow) {
if(A.val != slow.val){
return false;
}
if(A.next==slow) {
return true;
}
A=A.next;
slow=slow.next;
}
return true;
}
}
鱼式疯言
要点:
在本题我们利用了 快慢指针的头插 ,三指针 的方法
注意:
当节点数为
偶数
时
就需要 判断
A.next==slow
是否成立 ,这点一定要主要,否则就很有可能进入 无限循环
总结
-
反转链表 : 体会到三指针在反转链表的实用性
-
链表的回文结构:利用了快慢指针的头插 ,三指针 的方法 的结合从中解决了本题
如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正
希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖