zoukankan      html  css  js  c++  java
  • [leedcode 234] Palindrome Linked List

    Given a singly linked list, determine if it is a palindrome.

    Follow up:
    Could you do it in O(n) time and O(1) space?

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public boolean isPalindrome(ListNode head) {
            /*判断给定的链表是不是回文的:
    
            把要判断的链表分成两部分,将第二部分逆置,逐个与前一部分的val相比较,若不同返回false*/
            
            if(head==null||head.next==null) return true;
            ListNode fast=head;
            ListNode slow=head;
            while(fast!=null&&fast.next!=null){//假如链表有奇数个元素,则slow指针在循环后指向正中的元素;
            //若链表有偶数个元素,则循环后slow指向n/2的元素位置
                fast=fast.next.next;
                slow=slow.next;
            }
            ListNode list2=reverse(slow);//将链表后面逆置
            while(list2!=null){
                if(head.val!=list2.val) return false;
                head=head.next;
                list2=list2.next;
            }
            return true;
        }
        public ListNode reverse(ListNode node){
            ListNode pre=null;
            ListNode p=node;
            ListNode rear=node;
            while(rear!=null){
                rear=rear.next;
                p.next=pre;
                pre=p;
                p=rear;
            }
            return pre;
        }
    }
  • 相关阅读:
    POJ3186(KB12-O DP)
    POJ1661(KB12-M DP)
    POJ2533(KB12-N LIS)
    POJ1458(KB12-L LCS)
    HDU1160(KB12-J DP)
    HDU1260(KB12-H DP)
    HDU1114(KB12-F DP)
    HDU1024(DP)
    HDU1074(KB12-D 状态压缩dp)
    天梯赛2016-L2
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4713621.html
Copyright © 2011-2022 走看看