河北省住房与建设厅网站首页站酷网页设计分析
河北省住房与建设厅网站首页,站酷网页设计分析,做网站游戏网站违法,万网ip地址查询✨专栏#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》
❤️感谢大家点赞#x1f44d;#x1f3fb;收藏⭐评论✍#x1f3fb;#xff0c;您的三连就是我持续更新的动力❤️
#x1f64f;小杨水平有限#xff0c;欢迎各位大佬指点#xff0c;相互学习…
✨专栏《Java SE语法》 | 《数据结构与算法》 | 《C生万物》
❤️感谢大家点赞收藏⭐评论✍您的三连就是我持续更新的动力❤️
小杨水平有限欢迎各位大佬指点相互学习进步 文章目录 1. 题目描述测试样例 2. 思路3. 代码 1. 题目描述
对于一个链表请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法判断其是否为回文结构。
给定一个链表的头指针A请返回一个bool值代表其是否为回文结构。保证链表长度小于等于900。
测试样例 输入1-2-2-1 输出true 题目链接
2. 思路 判断链表是否为空如果为空那么链表就是回文的 找到中间元素 定义两个指针slow和fastfast每次移动两步slow每次移动一步当fast走到链表中的最后一个节点是slow就指向了链表的中间节点。 反转链表后半部分的元素 定义指针cur指向中间节点的next从中间节点循环遍历链表定义指针curNext指向cur的next保存下一个节点将当前节点的next指向slowslow移动到当前节点的cur位置cur移动到下一个节点 同时遍历反转后的链表和原始链表的前半部分并比较每个节点的值。如果所有的节点都匹配那么链表就是回文否则它不是回文。 一个从前一个从后循环遍历链表直到相遇判断两个当前节点是否相同如果不同返回false如果相同判断head的next等不等于slow如果等于直接返回true链表节点个数为偶数个head移动到下一个节点slow移动到下一个节点
3. 代码
import java.util.*;/*
public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;}
}*/
public class PalindromeList {public boolean chkPalindrome(ListNode head) {if (head null) {return true;}// write code here// 1.找到中间元素ListNode fast head;ListNode slow head;while (fast ! null fast.next ! null) {fast fast.next.next;slow slow.next;}// 2.反转链表ListNode cur slow.next;while (cur ! null) {ListNode curNext cur.next;cur.next slow;slow cur;cur curNext;}// 3.一个向后遍历一个向前遍历while (slow ! head) {if (slow.val ! head.val) {return false;}if (head.next slow) {return true;}head head.next;slow slow.next;}return true;}
}运行结果
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90271.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!