Palindrome Linked List
来源:互联网 发布:java中判断是星期几 编辑:程序博客网 时间:2024/06/07 06:23
这是一道很考验自己基本功的题
我们采用了网上通行的O(n)时间,O(1)空间的解法
1. 找到链表的中间节点,
2. 将中间节点之后的链表反转,
3. 用头结点和中间节点后的链表比较。
当中第1步和第2步是基本功,自己必须好好掌握。
/** * 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) { if (head == null) { return true; } ListNode midNode = getMiddle(head); midNode.next = reverseList(midNode.next); ListNode p1 = head, p2 = midNode.next; while (p1 != null && p2 != null) { if (p1.val == p2.val) { p1 = p1.next; p2 = p2.next; } else { return false; } } return true; } private ListNode getMiddle(ListNode head) { if (head == null) { return head; } ListNode slow = head, fast = head.next; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; } return slow; } private ListNode reverseList(ListNode head) { ListNode prev = null; while (head != null) { ListNode temp = head.next; head.next = prev; prev = head; head = temp; } return prev; }}
0 0
- Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- leetoj Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- Leetcode47: Palindrome Linked List
- Palindrome Linked List
- 234Palindrome Linked List
- LeetCode Palindrome Linked List
- LeetCode - Palindrome Linked List
- leetcode: Palindrome Linked List
- Palindrome Linked List 234
- Palindrome Linked List
- Palindrome Linked List
- Leetcode: Palindrome Linked List
- 100. Same Tree
- PAT 1008
- SpringMVC整合Shiro
- 242. Valid Anagram
- 值传递跟引用传递的区别,hashCode()和equals()的区别, 抽象类和接口的区别
- Palindrome Linked List
- 171. Excel Sheet Column Number
- CSDN这体验我也真是醉了
- 169. Majority Element
- 使用RxJava和RxAndroid封装RxBus,实现EventBus功能
- java 中wait和notify 线程等待和线程唤醒的使用方式 需要借助synchronized
- 217. Contains Duplicate
- LeetCode-29.Divide Two Integers
- 350. Intersection of Two Arrays II