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

手机网站开发程序员上海百度推广优化公司

手机网站开发程序员,上海百度推广优化公司,手机在线logo免费设计,网站数据丢失了做数据恢复需多久回文链表判定 给你一个单链表的头节点 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.tj-hxxt.cn/news/129464.html

相关文章:

  • 网站服务器维护价格常用的网络推广方法有哪些
  • 开发网站的软件网站关键词优化怎么做的
  • 网站建设得花多少钱怎么创建一个属于自己的网站
  • 建设项目银行网站aso优化服务
  • 北京优化网站方法seo搜索
  • 小型网站开发需要什么步骤微营销官网
  • 采用html5网站重庆网络推广平台
  • 快速创建一个网站google推广怎么做
  • 重庆网站建设与网络推广互联网营销师考试题库
  • 网站开发做什么简单关键词优化平台有哪些
  • 厦门b2b网站建设网站优化推广费用
  • 做拼多多网站免费课程百度搜索一下
  • 59网站一起做网店网站优化查询代码
  • 网站制作教程:初学者青岛seo推广
  • 网站建设实施文档女排联赛排名
  • 毕业设计网站做啥站内营销推广方式
  • 为什么做网站要有自己的服务器广州线下教学
  • 北京海淀建设工程律师哪个好西安网站关键词优化费用
  • 营销赚钱网站头条今日头条新闻头条
  • 在线用代码做网站百度网站建设
  • 网站建设的方法b站推广
  • 怎么做公司内部网站百度seo排名培训 优化
  • 常州哪些网站公司做的好处线上培训机构排名前十
  • 信阳做网站推广信阳网站建设吸引人的软文标题
  • 网站备案是指什么福州seo网站推广优化
  • 网上兼职网站开发网络优化公司排名
  • 梅州做网站设计公司seo外包一共多少钱
  • 南昌网站建设联系方式全网优化哪家好
  • 上杭建设局网站搜索 引擎优化
  • 建设网站需要两种服务支持新闻头条