234. Palindrome Linked List
来源:互联网 发布:2015十大网络用语 编辑:程序博客网 时间:2024/06/14 00:03
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->2->3->2->1
链表1 : 1->2
链表2: reverse(2->1)= 1->2
1->2->3->3->2->1链表1 : 1->2->3
链表2: reverse(3->2->1)= 1->2->3
这里找切分点用的是遍历计数节点然后/2,也可以借鉴快慢指针的思想来找切分点。
public boolean isPalindrome(ListNode head){if(head==null||head.next==null)return true;int cnt=1;ListNode node=head;while(node.next!=null){cnt++;node=node.next;}node=head;for(int i=0;i<(cnt%2==0?cnt/2:cnt/2+1);i++)node=node.next;node=reverseList(node);ListNode n=head;while(node!=null){if(n.val!=node.val)return false;node=node.next;n=n.next;}return true;}public ListNode reverseList(ListNode head){if(head==null)return head;ListNode prev=head;ListNode p=head.next;ListNode pnext=null;while(p!=null){pnext=p.next;p.next=prev;prev=p;p=pnext;}head.next=null;return prev;}
0 0
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome (Linked List)
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- Coin Change
- HIVE配置文件
- jedis基本介绍
- STK和Matlab编程规范
- php 写session
- 234. Palindrome Linked List
- Android 开发之旅——Android Studio2 安装 GO!
- synchronized同步机制的应用
- string::substr
- 初学Zynq与Vivado
- 【HiveETL】物流行业 -- 订单跟踪、SLA
- Android自定义View(二)
- Linux/UNIX 定时任务 cron 详解
- 死锁示例程序