在本篇文章里,我将分享一道很经典的算法题———链表中倒数第k个结点,并且分享解题思路,希望可以帮助到你😀😀😀
题目描述:
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。
给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。
测试样例:
1->2->2->1
返回:true
以下代码均经过牛客测试,均正确,请放心测试😊😊😊
代码:
/*
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 true;
}
// write code here
//找到中点
ListNode fast = A;
ListNode slow = fast;
ListNode cur = fast;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
//翻转
cur = slow.next;
while (cur != null) {
ListNode curNext = cur.next;
cur.next = slow;
slow = cur;
cur = curNext;
}
while (A != slow) {
if (A.val != slow.val) {
return false;
}
if (A.next != slow) {
return true;
}
A = A.next;
slow = slow.next;
}
return true;
}
}
结果展示:
最后
十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:
1、要么努力往上爬,要么烂在社会最底层。
2你现在的努力,真的配得上你的野心吗 ?
3、承认吧你表面的不屑,只是因为你骨子里的不敢。
4、“你说我现在开始好好学,晚了吗?” “我说晚了,你就不学吗???” 他们都是假装颓废,而你是真的颓废。
5、有种错觉叫做“我在头脑中激情澎湃了一会儿就权当我努力过了”,还有种常态叫做“我临睡前想做件大事改变世界激动得睡不着第二天早上连早起都做不到”。
最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)
**愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!**