leetcode:Palindrome Linked List 【Java】
2016-03-10 23:53
435 查看
一、问题描述
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?
二、问题分析
把后半部分链表翻转(参照博文leetcode:Reverse
Linked List 【Java】)后,与前半部分比较。
三、算法代码
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?
二、问题分析
把后半部分链表翻转(参照博文leetcode:Reverse
Linked List 【Java】)后,与前半部分比较。
三、算法代码
/** * 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; } //1.遍历确定长度 int length = 0; ListNode p = head; while(p != null) { length ++; p = p.next; } p = head;//用完之后, p归位 if(length == 1) { return true; } //2.将后半部分链反转 int half = (length + 1) / 2; ListNode q = head; for(int i = 0; i < half; i ++) { q = q.next; } //开始反转 ListNode r = q.next; q.next = null; ListNode m; while(r != null) { m = r.next; r.next = q; q = r; r = m; } //3.依次比较,直到其中一个或者两个链遍历完 while(q != null && p != null) { if(p.val == q.val) { q = q.next; p = p.next; }else { return false; } } return true; } }
相关文章推荐
- 用maven管理spark应用程序,提交到spark on yarn 集群上运行
- LeetCode : Search Insert Position [java]
- Java集合小结(1)
- java学习--异常
- 用 maven 下载 jar 文件以及 javadoc 和 sources
- Spring注入的反射解释
- 【java基础】多线程--生产者消费者--复习
- 怎么知道Java class文件JDK编译的版本号
- Java国际化程序
- 详解Java 类的初始化
- java中>>与>>>的区别
- java几个重要函数
- JDK动态代理
- JAVA线程
- LeetCode : Search for a Range [java]
- Eclipse快捷键大全
- Eclipse快捷键大全
- leetcode:Valid Palindrome 【Java】
- struts-dojo的使用
- struts2发送邮件