• 【力扣】234. 回文链表


    请判断一个链表是否为回文链表。

    示例 1:

    输入: 1->2
    输出: false
    示例 2:

    输入: 1->2->2->1
    输出: true
    进阶:
    你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/palindrome-linked-list

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public boolean isPalindrome(ListNode head) {
            if(head == null){
                return true;
            }
    
            //遍历链表,找到中间节点
            ListNode slow = head;
            ListNode fast = head;
            while(fast.next != null && fast.next.next != null){
                slow = slow.next;
                fast = fast.next.next;
            }
            System.out.println("find slow is " + slow.val);
    
            //得到链表逆转后的结果
            ListNode reverseResult = reverseList(slow.next);
            while(reverseResult != null){
                if(head.val != reverseResult.val){
                    return false;
                }
                head = head.next;
                reverseResult = reverseResult.next;
            }
            return true;
        }
    
        //单链表的反转
        public static ListNode reverseList(ListNode node) {
            ListNode pre = null;
            ListNode next = null;
            while (node != null) {
                next = node.next; //知道下一个节点是什么
                node.next = pre;  // 把当前循环到的节点的下一个设置为之前已经遍历的结果内容
                pre = node; // 把当前节点再指向pre
                node = next; //依次向后走
            }
    
            return pre;
        }
    }

    时间复杂度:O(n)

    空间复杂度:O(1),有多个临时node,但是没有额外的数据结构

    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    Maybe You Don't Know ! 如何比较两个引用是否指向同一个对象?
    记录一点项目心得...
    SharePoint 站点模版
    ObjectSpaces,See you in 2006...
    CLR如何实现线程同步
    Using 1.1, Waiting 2.0 & EasyThread
    在SharePoint中的Workflow引擎开发完成
    ViewState
    《WalkThrough WebPart 入门指南二》完成
    隐藏在.NET中的IoC?
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/13862559.html
Copyright © 2020-2023  润新知