判断链表是否为回文结构
生活随笔
收集整理的這篇文章主要介紹了
判断链表是否为回文结构
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對(duì)于一個(gè)鏈表,請(qǐng)?jiān)O(shè)計(jì)一個(gè)時(shí)間復(fù)雜度為O(n),額外空間復(fù)雜度為O(1)的算法,判斷其是否為回文結(jié)構(gòu)。
Code
//coding=utf8 /***************************************************** @Author: Alex @Created Time : Tue 03 Sep 2019 07:36:51 AM CST @File Name: palindromeList.java @Blog: https://blog.csdn.net/weixin_43336281 ****************************************************/ public class palindromeList{ public static class Node{ public int value; public Node next; public Node(int data){ this.value = data; } } public static boolean isPalindrome(Node head){ if(head == null || head.next == null) return true; Node n1 = head; Node n2 = head; while(n2.next != null && n2.next.next != null){ n1 = n1.next; n2 = n2.next.next; } n2 = n1.next; n1.next = null; Node n3 = null; while(n2 != null){ n3 = n2.next; n2.next = n1; n1 = n2; n2 = n3; } n3 = n1; //n3 is last node n2 = head; boolean res = true; while(n1 != null && n2 != null){ if(n1.value != n2.value){ res = false; break; } n1 = n1.next; n2 = n2.next; } n1 = n3.next; n3.next = null; while(n1 != null){ n2 = n1.next; n1.next = n3; n3 = n1; n1 = n2; } return res; } }總結(jié)
以上是生活随笔為你收集整理的判断链表是否为回文结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Makefile 学习 1
- 下一篇: 人工智能实践之旅 —— 简单说说主要内容