[第 5 天] 4.20 (万向链表)
最编程
2024-04-20 11:47:39
...
1.回文链表
1.1题目
给你一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
- 示例一:
输入:head = [1,2,2,1]
输出:true
- 示例二:
输入:head = [1,2]
输出:false
1.2解法:双指针
1.2.1解法思路
- 使用快慢指针遍历整个链表,以此找到链表的中间节点;
- 并在遍历过程中,反转slow遍历过的每个节点,用cur标记;
- 遍历的终止条件为 fast指向的节点为空 或者 fast指向的节点的下一个节点为空
1.2.2代码实现
public boolean isPalindrome(ListNode head) {
ListNode fast=head;
ListNode slow=head;
ListNode cur=null; //反转链表
//1、找到中间节点
while(fast!=null && fast.next!=null){
ListNode tmp=slow; //暂存slow节点
fast=fast.next.next;
slow=slow.next;
tmp.next=cur; //反转
cur=tmp; //更新cur节点
}
//2、判断链表长度是否为奇数:若为奇数,则将slow移动到下一位
if(fast!=null){
slow=slow.next;
}
//3、遍历后半段的回文串和前半段的回文串
while(slow!=null && cur!=null){
if(slow.val!=cur.val){
return false;
}
slow=slow.next;
cur=cur.next;
}
return true;
}
推荐阅读
-
LeetCode 访谈系列第 5 天:第 204 期 - 统计素数
-
向过去学习--第 5 天
-
[第 5 天] 4.20 (万向链表)
-
第 5 天综述笔记 3 基于深度学习的十大细分模型类别(下)
-
蓝桥杯刷新 - 第 5 天
-
STM32 | PWM 脉宽调制(第 5 天呼吸灯源代码分析)-led.c
-
白润 WRF 第 5 天,安装 WPS 和静态地理数据
-
第 4-25 天K 一套翻转链表
-
卷积的意义--我见过最生动易懂的解释--就是在图像处理中,将两组分辨率不同的图像进行卷积处理,从而形成易于处理的平滑图像。卷积甚至可以用在考试作弊中,为了让照片中的两个人同时像,只要对两个人的图像进行卷积处理就可以了,这是一种平滑处理,但我们如何才能真正把这个公式与实际建立一种联系,也就是说我们能不能从生活中找到一个很方便具体的例子来表达这个公式的物理意义呢? 有一个七品县令,喜欢打骂无赖,并有一个惯例:只要不犯大罪,只打一顿就放他回家,以示爱民如子。 有一种无赖,想扬名立万却又不抱多大希望,心想:既然扬不了好名,出了臭名也成啊。怎样才能出恶名呢?炒作!怎么炒作?找名人!他自然而然地想到了自己的长官--县令。 无赖于是在光天化日之下,站在县衙门口撒了泡尿,后果可想而知,自然是被请进堂上挨了板子,然后昂首挺胸地回家,躺了一天,哎!身体并无大碍!第二天照样如此,全然不顾行政长管的仁慈和衙门的尊严,第三天、第四天 ......每天去县衙领板子回来,还兴高采烈,坚持了一个月之久!这个无赖的名声像衙门口的臭气一样传遍了八方! 县太爷噤了噤鼻子,愣愣地望着惊堂木案,皱了皱眉头,思考着一个问题:这三十块大木板怎么会不好用呢?......想想也是,当年这位大人金榜题名的时候,我数学考了满分,所以这道题至少今天得解出来: --人(系统!)会怎么样(系统!)之后会怎么样(输出!)人(系统!)被打之后会怎么样? --有什么用,很疼! --我问的是:会发生什么? --取决于有多疼。就像这个无赖的体质,每天挨一板什么事都不会发生,连哼哼两声都不行,你看他那得意洋洋的样子(输出 0);如果一次连打他十板,他可能会皱着眉头,咬着牙,硬是不哼一声(输出 1);打到二十板,他会疼得脸都变形了,像猪一样哼哼唧唧(输出 3);打到三十板,他可能会像驴一样嚎叫,一把鼻涕一把泪,求你饶他一命(输出 5);打到四十板,他会大小便失禁,勉强哼哼(输出 1);打到五十板,他连哼哼都不能哼一下(输出 0)--死! 县官摊开坐标纸,绘制了一条以挨打次数为 X 轴、哼唱程度(输出)为 Y 轴的曲线: --"呜呼!这条曲线就像一座山,想不通,想不通。为什么那个无赖被打了三十天也不喊救命? --哦,你打的时间间隔(Δτ=24小时)太长了,这样无赖一天承受的痛苦程度,没有叠加,始终是个常数;如果缩短时间间隔(建议Δτ=0。5 秒),那么他的疼痛程度就可以迅速叠加;等到无赖挨了三十下(t=30)时,疼痛程度已经达到他叫喊能力的极限,就会收到最好的惩戒效果,再多挨几下也不会手下留情。 --还是不太明白,为什么疼痛程度会在小时间间隔内叠加? --这跟人(线性时变系统)对木板(脉冲、输入、激发)的反应有关。什么是响应?人收到板子后,疼痛的感觉会在一天内(假设,因人而异)慢慢消失(衰减),而不是突然消失。这样,只要中风的时间间隔较小,每次中风造成的疼痛就没有时间完全衰减,都会对最终的疼痛程度产生不同的影响: t 块大板造成的疼痛程度 = Σ(第 τ 块大板造成的疼痛程度 * 衰减系数)[衰减系数是 (t - τ) 的函数,请仔细品味] 数学表达式为:y(t) = ∫T(τ)H(t-τ)
-
苍穹外卖第05天--总结 5