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;
        }
    }
  • 相关阅读:
    SQL 启动服务方法
    SQL 2012 连接失败
    数据库 基本操作有哪些
    windows 计算机 管理 命令
    windows下编译使用NDK,调用SO文件
    windows 注册表命令
    spring @Transactional 声明式事务
    Set List Map
    bean 的各个属性
    util:
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4713621.html
Copyright © 2011-2022 走看看