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

网站app免费制作创业平台app

网站app免费制作,创业平台app,中山市建设局网站,连云港网站推广回文链表判定 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 方法一:栈反转对比法 解题思路:找到中间节点后用栈辅助反转对比 解题方法&#xff1…

回文链表判定

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

方法一:栈反转对比法

解题思路:找到中间节点后用栈辅助反转对比
解题方法:
找到链表的中间节点并判断奇数还是偶数
头结点到中间节点前的节点入栈,偶数从中间节点开始和栈内元素进行比较;
奇数从中间节点后面的节点开始和栈内元素进行比较;
若比较到最后一个节点都相等该链表为回文链表(栈空或比较到最后一个节点)
时间复杂度:O(n)
空间复杂度:O(n)

import java.util.List;
import java.util.Stack;import javax.management.ListenerNotFoundException;/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public static boolean isPalindrome(ListNode head) {/*** head -> 1 -> 2 -> 2 -> 1 -> null* head -> 1 -> 2 -> 1 -> null* 找到链表的中间节点并判断奇数还是偶数* 头结点到中间节点的节点入栈,偶数从中间节点开始和栈内元素进行比较;* 奇数从中间节点后面的节点开始和栈内元素进行比较;* 若比较到最后一个节点都相当该链表为回文链表(栈空或比较到最后一个节点)*/if(head == null){return false;}ListNode dummy = new ListNode(-1);dummy.next=head;ListNode slow=dummy;ListNode fast=dummy;ListNode midNode=null;Boolean isEvent=true;while (fast.next!=null){slow=slow.next;if(fast.next.next!=null) {fast = fast.next.next;} else{fast=fast.next;isEvent=false;}}midNode = isEvent ? slow.next : slow;Stack<ListNode> stack=new Stack<>();ListNode p=dummy.next;while(p!=midNode){stack.push(p);p=p.next;}ListNode m=isEvent?midNode:midNode.next;while(m!=null){ListNode tmp=stack.pop();if(m.val!=tmp.val){return false;}m=m.next;}return true;}
}

方法二:链自反转对比法

解题思路:找到中间节点后用栈辅助反转对比
解题方法:
找到链表的中间节点并判断奇数还是偶数
继续利用双指针反转中间节点前的链表。
偶数从中间节点开始和反转链进行比较;
奇数从中间节点后面的节点开始和反转链进行比较;
若比较到最后一个节点都相等该链表为回文链表(栈空或比较到最后一个节点)
时间复杂度:O(n)
空间复杂度:O(1)

   public static boolean isPalindrome(ListNode head) {/*** [1,0,1]* head -> 1 -> 2 -> 2 -> 1 -> null* head -> 1 -> 2 -> 1 -> null找到链表的中间节点并判断奇数还是偶数继续利用头插法反转中间节点前的链表。偶数从中间节点开始和反转链进行比较;奇数从中间节点后面的节点开始和反转链进行比较;若比较到最后一个节点都相等该链表为回文链表(栈空或比较到最后一个节点)*/if(head == null){return false;}ListNode dummy = new ListNode(-1);dummy.next=head;ListNode slow=dummy;ListNode fast=dummy;ListNode midNode=null;Boolean isEvent=true;while (fast.next!=null){slow=slow.next;if(fast.next.next!=null) {fast = fast.next.next;} else{fast=fast.next;isEvent=false;}}midNode = isEvent ? slow.next : slow;ListNode p = head;head=null;while (p!=midNode){ListNode tmp=p.next;p.next=head;head=p;p=tmp;}//偶数从中间节点开始和反转链进行比较ListNode m = isEvent ? midNode : midNode.next;boolean isPalindrome=true;p=head;while (isPalindrome && p!=null){if(p.val!=m.val){isPalindrome=false;}p=p.next;m=m.next;}// 还原链表p = head;head=midNode;while (p!=null){ListNode tmp=p.next;p.next=head;head=p;p=tmp;}return  isPalindrome;}
http://www.yayakq.cn/news/562004/

相关文章:

  • 网站主体注销秒收录的网站
  • 集团网站建设详细策划成都电商网站开发公司
  • 深圳专业制作网站公司吗毕业设计 做网站
  • 百度回收网站搭建大连企业自助建站
  • wordpress商城安装教程胶州网站优化价格
  • 昆明网站外包it行业的现状及发展前景
  • 企业官方网站建设教程娱乐城网站开发
  • 图书网站开发数据库的建立企业logo标志设计公司
  • 微网站界面尺寸装修风格大全2023新款
  • 网站建设放在什么科目网页设计教程教学目的
  • 网站建设制作报价方案上海城乡建设管理局网站保障房板块
  • 营销型网站的三元素城乡住房和城乡建设网站查询
  • 周口集团网站建设百度总部
  • 网站建设及维护费用成立公司注意事项
  • 洛阳市做网站贴吧购物网站的后台做哪些东西
  • 在线教学网站开发番禺制作网站系统
  • 容桂销售型网站建设扫码支付个人商城网站开发免费
  • 本地网站建设视频教程东莞网络推广运营企业
  • 滁州网站建设哪个好点aspcms网站打不开
  • seo网站推广工作内容哪里建设网站
  • 建设网站挣钱高端人才招聘网站
  • 移动电商网站包装设计网站排行榜
  • 惠州做棋牌网站建设多少钱徐州手机网站建设
  • 西山区建设局网站免费网站建设范例
  • 有效推广网站毕业设计做 什么网站好
  • 生活服务网站开发与设计有专门做礼品的网站吗
  • 百度能收录的免费网站做网站的桔子什么
  • 网页设计师多少钱一个月苏州网站优化推广
  • 做山西杂粮的网站江苏seo和网络推广
  • 网站推广策略和营销策略做网站 接单