leetcode_Palindrome Linked List
来源:互联网 发布:linux服务器禁止ping 编辑:程序博客网 时间:2024/06/10 21:37
描述:
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?
思路:
1.有大概两种思路,第一种将linkedLIst表中的数据读取到一个ArrayList中,然后从ArrayList前后开始比较即可。Time:O(n),Space:O(n)
2.第二种用快慢指针找到中间节点,然后将链表断成两个表,并将后面的链表逆转,然后顺序比较两个链表即可。Time:O(n),Space:O(1)
3.显然只有第二种方法符合题意。
代码:
public boolean isPalindrome(ListNode head) { if(head==null||head.next==null) return true; ListNode p=head,temp=head,quick=head; while(temp!=null&&quick!=null) { temp=temp.next; if(quick.next==null) break; quick=quick.next.next; } temp=reverseList(temp); p=head; while(temp!=null&&p!=null) { if(temp.val!=p.val) return false; temp=temp.next; p=p.next; } return true; } public ListNode reverseList(ListNode head) { ListNode tempHead=new ListNode(-1); ListNode p=head.next,q=null; tempHead.next=head; head.next=null; while(p!=null) { q=p; p=p.next; q.next=tempHead.next; tempHead.next=q; } return tempHead.next; }
0 0
- leetcode_Palindrome Linked List
- leetcode_Palindrome Linked List
- Linked List
- linked list
- linked list
- Linked List
- Linked List
- Linked List
- linked list
- Linked List
- Linked List
- Linked list
- Linked List
- linked list 倒转linked list
- Linked List->single linked list
- Leetcode_palindrome-number
- Leetcode_palindrome-partitioning
- Leetcode_Palindrome Number
- HDOJ 1097 A hard puzzle(规律)
- VirtualBox 中 Ubuntu 硬盘容量扩大
- 求最大连续子向量之和
- 2005年GCT真题
- 2015.8.7记录iOS侧滑实现
- leetcode_Palindrome Linked List
- 234 - Palindrome Linked List
- CocoaPods安装和使用和遇到的坑
- POJ 1026 Cipher 置换群
- 菜鸟程序员如何防止上错船
- UVa 11054 Wine trading (贪心)
- iOS UI07_导航视图控制器
- 面试题2
- hdu 1429 胜利大逃亡(续) (bfs + 状态压缩)