当前位置: 首页 > news >正文

旧电脑怎么做网站河南郑州最新事件

旧电脑怎么做网站,河南郑州最新事件,网站建设结论与改进,下载源代码的网站回文链表 题目描述#xff1a; 给你一个单链表的头节点 head #xff0c;请你判断该链表是否为回文链表。如果是#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。 示例 1#xff1a; 输入#xff1a;head [1,2,2,1] 输出#xff1a;true示例 2#…回文链表 题目描述 给你一个单链表的头节点 head 请你判断该链表是否为回文链表。如果是返回 true 否则返回 false 。 示例 1 输入head [1,2,2,1] 输出true示例 2 输入head [1,2] 输出false提示 链表中节点数目在范围[1, 105] 内0 Node.val 9 进阶你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题 方法一思路分析 反转链表的一半 使用快慢指针找到链表的中点快指针每次移动两步慢指针每次移动一步当快指针到达链表末尾时慢指针就位于链表的中点对于奇数个节点的链表慢指针位于中间两个节点的第一个。 反转链表的后半部分从慢指针开始反转链表的后半部分。 比较前后两部分将反转后的后半部分与原始链表的前半部分进行比较如果每个节点都相等则是回文链表。 代码实现 public class Solution { public boolean isPalindrome(ListNode head) { // 如果链表为空或只有一个节点直接返回true if (head null || head.next null) { return true; } // 使用快慢指针找到链表的中点 ListNode slow head; ListNode fast head; ListNode prev null; while (fast ! null fast.next ! null) { prev slow; slow slow.next; fast fast.next.next; } // 如果链表长度为奇数则跳过中点 if (fast ! null) { slow slow.next; } // 反转链表的后半部分 ListNode secondHalfHead reverseList(slow); // 比较前半部分和反转后的后半部分 ListNode p1 head; ListNode p2 secondHalfHead; while (p2 ! null) { if (p1.val ! p2.val) { return false; } p1 p1.next; p2 p2.next; } return true; } // 反转链表的方法 private ListNode reverseList(ListNode head) { ListNode prev null; ListNode curr head; while (curr ! null) { ListNode nextTemp curr.next; curr.next prev; prev curr; curr nextTemp; } return prev; } } 方法二思路分析使用栈 遍历链表将遍历到的每个节点的值压入栈中。然后再次遍历链表同时从栈中弹出元素比较从链表中取出的元素和从栈中弹出的元素是否相等。如果所有元素都匹配则链表是回文的。 public class Solution { public boolean isPalindrome(ListNode head) { StackInteger stack new Stack(); ListNode curr head; // 遍历链表将值压入栈 while (curr ! null) { stack.push(curr.val); curr curr.next; } // 再次遍历链表同时从栈中弹出元素进行比较 curr head; while (curr ! null) { if (curr.val ! stack.pop()) { return false; } curr curr.next; } return true; } } 方法三思路分析使用数组 遍历链表将遍历到的每个节点的值存储在一个数组中。然后使用双指针技术一个从头开始一个从尾开始来比较数组中的元素。这种方法的空间复杂度是O(n)其中n是链表的长度。 public class Solution { public boolean isPalindrome(ListNode head) { ListInteger vals new ArrayList(); ListNode curr head; // 遍历链表将值存储在数组中 while (curr ! null) { vals.add(curr.val); curr curr.next; } // 使用双指针比较数组中的元素 int i 0, j vals.size() - 1; while (i j) { if (!vals.get(i).equals(vals.get(j))) { return false; } i; j--; } return true; } }
http://www.hkea.cn/news/14449072/

相关文章:

  • 企业邮箱注册申请腾讯免费seo课程总结怎么写
  • 广西注册公司网站公司网站建设入哪科目
  • windows 网站建设营销方案策划书怎么写
  • 移动互联网 网站建设江苏聚峰建设集团网站
  • 门户网站建设教程建筑模板规格一览表
  • 做网站新闻移动动态wordpress手机 问题
  • 网站建设与管理简答题上海网站搭建公司哪家好
  • 织梦 一键更新后网站空白毕设做网站怎么样
  • 做网站为什么要去工厂做网站的语言有哪些
  • 网站建设的方案模板下载新乡网站建设求职简历
  • 做搜狗pc网站优化点网络推广十大平台
  • 做资源网站盈利点asp.net mvc 网站开发
  • 局网站建设招标wordpress下拉列表
  • 建设网站的公司排名wordpress中文主题团队
  • 网站建设开发计划可以建立网站的平台
  • 潍坊潍微贷是哪家网站建设的商标设计网上接单app
  • 烟台企业做网站怎样做电子商务网站
  • 演示网站ui网页界面设计素材
  • 专业北京网站建设公司哪家好怀柔网站制作
  • 百度怎么注册公司网站上线了小程序制作平台
  • 中国城投建设集团有限公司网站dw软件主要做什么
  • 石家庄网站建设燕杰百度知道官网
  • 兼职开发网站开发在线音乐制作网站
  • 淘宝的网站是怎么做的百度关键词排名手机
  • 有帮忙做网站的吗做网站被用作非法用途
  • 做微网站平台昆明网页制作开发
  • 网站建设教程出售用苏州久远网络如何做教育网站
  • 大连seo网站医院网站建设价格
  • asp.net 微信网站企业建设网站的作用
  • wordpress一键建站做游戏直播什么游戏视频网站