LeetCode 234. Palindrome Linked List Add to List
来源:互联网 发布:计算机算法需要学什么 编辑:程序博客网 时间:2024/06/06 00:52
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?
解题思路:计算链表总节点长度,然后将前一半节点利用头插法反转过来,形成一个新的链表,再与后面的一半节点数的链表进行比较。
注意:当原链表总节点为奇数时,将中间那个节点分到后面一半链表,然后跳过中间节点。
public class Solution { public boolean isPalindrome(ListNode head) { if(head==null || head.next==null){ //最多一个节点 return true; } else{ //至少三个节点 ListNode p=head; int count=0; //记录链表的总结点个数 while(p!=null){ count++; p=p.next; } //然后再从头结点开始,利用头插法,形成前一半count节点的链表 p=head.next; ListNode t=head; //前一半链表的头节点 int fircount=1; while(fircount<count/2){ ListNode q=p; p=p.next; q.next=t; t=q; fircount++; } //while结束后,p指向后一半链表的第一个节点 //t一直指向前一半链表的head if(count%2!=0){ //原链表个数为奇数时,跳过中间的那个节点 p=p.next; } while(t!=null && p!=null){ if(t.val!=p.val){ return false; } t=t.next; p=p.next; } return true; } }}
0 0
- LeetCode 234. Palindrome Linked List Add to List
- [leetcode] 234.Palindrome Linked List
- [LeetCode]234.Palindrome Linked List
- [leetcode] 234.Palindrome Linked List
- 【leetcode】234. Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- [leetcode] 234. Palindrome Linked List
- 234. Palindrome Linked List LeetCode
- LeetCode--234. Palindrome Linked List
- LeetCode 234. Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- leetcode 234. Palindrome Linked List
- LeetCode *** 234. Palindrome Linked List
- LeetCode 234. Palindrome Linked List
- leetcode-234. Palindrome Linked List
- LeetCode-234.Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- [Leetcode]234. Palindrome Linked List
- 视图
- Linux 热插拔(Hot Plug)处理机制系列
- 在Oracle中寻找一个值
- python-pop,del,remove
- idea将项目导出为war包
- LeetCode 234. Palindrome Linked List Add to List
- [Drools]JAVA规则引擎2 -- Drools实例
- Android RxJava操作符一览
- ARM交叉编译器扫盲
- xgboost使用案例一
- ECMA5中的新特性getter和setter
- A potentially dangerous Request.Form value was detected from the client
- Jmeter性能测试-----数据参数化方法
- 使用静态库链接程序