wordpress主题kingseo优化检测

张小明 2025/12/28 18:05:17
wordpress主题king,seo优化检测,中山最好的网站建设公司哪家好,帮助网站源码问题描述 给定一个单链表的头节点 head#xff0c;判断该链表是否为回文链表。如果是#xff0c;返回 true#xff1b;否则#xff0c;返回 false。 示例 #xff1a; 输入: head [1,2,2,1] 输出: true输入: head [1,2] 输出: false 进阶#xff1a; 你能否用 O(n)…问题描述给定一个单链表的头节点head判断该链表是否为回文链表。如果是返回true否则返回false。示例 输入: head [1,2,2,1] 输出: true输入: head [1,2] 输出: false进阶你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题解法一反转后半部分链表最优解这是面试中最常考的方法时间复杂度 O(n)空间复杂度 O(1)。算法步骤使用快慢指针找到链表的中间节点反转链表的后半部分比较前半部分和反转后的后半部分恢复链表可选代码实现class Solution { public boolean isPalindrome(ListNode head) { if(headnull||head.nextnull){ return true; } ListNode midFind_mid(head); ListNode head2reverse_List(mid); while(head2!null){ if(head.val!head2.val){ return false; } headhead.next; head2head2.next; } return true; } private ListNode reverse_List(ListNode head){//反转链表 ListNode prenull; ListNode curhead; while(cur!null){ ListNode Tempcur.next; cur.nextpre; precur; curTemp; } return pre; } private ListNode Find_mid(ListNode head){//找到中间节点 ListNode slowhead; ListNode fasthead; while(fast!nullfast.next ! null){ slowslow.next; fastfast.next.next; } return slow; } }关键点分析快慢指针找中点慢指针每次走一步快指针每次走两步当快指针到达末尾时慢指针正好在中点对于奇数长度链表慢指针停在中间节点对于偶数长度链表慢指针停在中间两个节点的第二个反转链表使用三个指针pre、curr、Tempcur指向prepre往前移cur往前移每次迭代将当前节点的next指向前一个节点时间复杂度与空间复杂度时间复杂度O(n)找中点O(n/2) ≈ O(n)反转后半部分O(n/2) ≈ O(n)比较两部分O(n/2) ≈ O(n)总时间O(n)空间复杂度O(1)只使用了常数级别的额外空间解法二使用栈思路利用栈的后进先出特性将链表元素入栈然后依次出栈与链表比较。代码实现javaclass Solution { public boolean isPalindrome(ListNode head) { if (head null || head.next null) { return true; } StackInteger stack new Stack(); ListNode current head; // 将链表值压入栈中 while (current ! null) { stack.push(current.val); current current.next; } // 比较栈顶元素和链表当前值 current head; while (current ! null) { if (current.val ! stack.pop()) { return false; } current current.next; } return true; } }复杂度分析时间复杂度O(n)需要遍历链表两次空间复杂度O(n)需要额外栈空间解法三递归思路利用递归的调用栈从链表末尾开始比较。代码实现javaclass Solution { private ListNode frontPointer; public boolean isPalindrome(ListNode head) { frontPointer head; return recursivelyCheck(head); } private boolean recursivelyCheck(ListNode currentNode) { if (currentNode ! null) { // 递归到链表末尾 if (!recursivelyCheck(currentNode.next)) { return false; } // 比较当前节点值和前端指针的值 if (currentNode.val ! frontPointer.val) { return false; } // 前端指针向后移动 frontPointer frontPointer.next; } return true; } }复杂度分析时间复杂度O(n)需要递归遍历整个链表空间复杂度O(n)递归调用栈的空间解法四复制到数组 双指针思路将链表值复制到数组中然后使用双指针判断数组是否为回文。代码实现javaclass Solution { public boolean isPalindrome(ListNode head) { // 将链表值复制到数组中 ListInteger values new ArrayList(); ListNode current head; while (current ! null) { values.add(current.val); current current.next; } // 使用双指针判断数组是否为回文 int left 0; int right values.size() - 1; while (left right) { if (!values.get(left).equals(values.get(right))) { return false; } left; right--; } return true; } }复杂度分析时间复杂度O(n)复制到数组O(n)双指针比较O(n/2) ≈ O(n)空间复杂度O(n)需要额外数组存储链表值常见错误与注意事项错误1没有处理奇偶长度差异java// 错误示例没有考虑奇偶长度差异 private ListNode findMiddle(ListNode head) { ListNode slow head; ListNode fast head; while (fast ! null) { // 错误应该检查fast.next slow slow.next; fast fast.next.next; } return slow; }修正javaprivate ListNode findMiddle(ListNode head) { ListNode slow head; ListNode fast head; while (fast ! null fast.next ! null) { slow slow.next; fast fast.next.next; } return slow; }错误2反转链表实现错误修正javaprivate ListNode reverseList(ListNode head) { ListNode pre null; ListNode cur head; while (cur ! null) { ListNode temp cur.next; cur.next pre; pre cur; cur temp; } return pre; }扩展如果要恢复链表怎么办如果需要保持链表原样可以在比较后再次反转恢复javaclass Solution { public boolean isPalindrome(ListNode head) { if (head null || head.next null) return true; // 找到中点 ListNode slow head, fast head; while (fast ! null fast.next ! null) { slow slow.next; fast fast.next.next; } // 反转后半部分 ListNode secondHalf reverseList(slow); // 比较 ListNode p1 head, p2 secondHalf; boolean result true; while (p2 ! null) { if (p1.val ! p2.val) { result false; break; } p1 p1.next; p2 p2.next; } // 恢复链表 reverseList(secondHalf); return result; } private ListNode reverseList(ListNode head) { ListNode prev null, curr head; while (curr ! null) { ListNode nextTemp curr.next; curr.next prev; prev curr; curr nextTemp; } return prev; } }总结方法时间复杂度空间复杂度优点缺点反转后半部分O(n)O(1)空间最优满足进阶要求修改了原链表结构使用栈O(n)O(n)实现简单不修改原链表需要额外空间递归O(n)O(n)代码简洁递归深度可能较大复制到数组O(n)O(n)实现简单需要额外空间推荐使用反转后半部分链表的方法因为空间复杂度为 O(1)满足进阶要求时间复杂度为 O(n)性能良好是面试中最常考的解法相关题目反转链表基础中的基础必须掌握链表的中间结点快慢指针的经典应用回文数字类似的回文判断问题回文字符串字符串版本的回文判断掌握这道题的关键在于理解快慢指针和链表反转这两个核心技巧这两个技巧在链表相关题目中非常常见。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

学校网站建设情况报告给企业做网站的好处

Vue流程图组件Flowchart-Vue:让复杂流程设计变得简单高效 【免费下载链接】flowchart-vue Flowchart & designer component for Vue.js. 项目地址: https://gitcode.com/gh_mirrors/fl/flowchart-vue 还在为繁琐的流程图开发而烦恼吗?每次接到…

张小明 2025/12/27 16:36:06 网站建设

我的世界是怎么做的视频网站大网站如何优化

EmotiVoice情感控制参数指南:精细调节语音情绪强度 在虚拟助手越来越“懂人心”、数字人直播频频出圈的今天,一个关键问题浮出水面:机器的声音,能否真正打动人类的情感? 过去几年里,TTS(文本转语…

张小明 2025/12/27 16:30:29 网站建设

北京专业响应式网站建设网络广告策划方案范文

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

张小明 2025/12/27 16:47:56 网站建设

dokuwiki wordpress 整合seo网站推广是什么意思

第一章:Open-AutoGLM模型下载慢的根源剖析在部署和使用 Open-AutoGLM 模型时,用户普遍反馈模型下载速度缓慢,严重影响开发与实验效率。该问题并非单一因素导致,而是由网络架构、资源分布、协议机制等多方面共同作用的结果。服务器…

张小明 2025/12/27 16:27:40 网站建设

宁夏建设教育协会网站html网页制作模板代码

Qwen系列模型性能优化指南:官方推荐参数配置与开放下载渠道公布 【免费下载链接】Qwen3-235B-A22B-MLX-8bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-235B-A22B-MLX-8bit 在人工智能大模型快速迭代的当下,模型性能的充分释放成…

张小明 2025/12/27 17:52:08 网站建设

网站如何做微信支付宝支付宝wordpress 微信主题下载

Qwen3-32B-GGUF终极指南:免费开源大语言模型快速部署方案 【免费下载链接】Qwen3-32B-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-32B-GGUF 想要在本地快速部署高性能大语言模型吗?Qwen3-32B-GGUF项目提供了完整的开源AI解决…

张小明 2025/12/27 22:36:34 网站建设