(easy)LeetCode 234.Palindrome Linked List
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?
思想:转置后半段链表节点,然后比较前半段和后半段节点的值是否相等。
代码如下:
/**
* 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 || head.next==null) return true; int len=0,tmp=0;
ListNode p=head,q=head,r=head,s=head;
int m1=0,m2=0;
int n1=0,n2=0;
while(p!=null){
len++;
p=p.next;
}
if(len==2){
if(head.val==head.next.val)
return true;
else
return false;
}
p=head;
if(len%2==1){
m1=0;
m2=len/2+1;
n1=m2-2;
n2=len-1; }else{
m1=0;
m2=len/2;
n1=m2-1;
n2=len-1; }
while(p!=null && tmp!=m2){
p=p.next;
tmp++;
} //p到达转置数组的头部
q=p;
if(p.next!=null){
q=p;
p=p.next;
q.next=null; while(p!=null){
r=p.next;
p.next=q;
q=p;
p=r;
}//while 循环后,q指后半段头
}
while(q!=null &&s.val==q.val){
q=q.next;s=s.next;
}
if(q==null)
return true;
else
return false; }
}
运行结果:
(easy)LeetCode 234.Palindrome Linked List的更多相关文章
- [leetcode] 234. Palindrome Linked List (easy)
原题 回文 水题 function ListNode(val) { this.val = val; this.next = null; } /** * @param {ListNode} head * ...
- [LeetCode] 234. Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...
- LeetCode 234. Palindrome Linked List (回文链表)
Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...
- Java [Leetcode 234]Palindrome Linked List
题目描述: Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) ...
- LeetCode 234 Palindrome Linked List
Given a singly linked list, determine if it is a palindrome. 思路: 回文结构从后向前遍历与从前向后遍历的结果是相同的,可以利用一个栈的结构 ...
- [LeetCode] 234. Palindrome Linked List 解题思路
Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...
- LeetCode 234 Palindrome Linked List(回文链表)(*)(?)
翻译 给定一个单链表,确定它是否是回文的. 跟进: 你能够在O(n)时间和O(1)空间下完毕它吗? 原文 Given a singly linked list, determine if it is ...
- Java for LeetCode 234 Palindrome Linked List
解题思路: O(1)的空间复杂度,意味着不能通过开一个List来解决问题.我们可以把List分成前后两个部分,后半部分通过指针的相互赋值进行翻转即可. JAVA实现如下: public static ...
- Leetcode 234 Palindrome Linked List 链表
判断链表是否是回文. 我直接将链表的一半进行倒置,然后将两半的链表进行比较 /** * Definition for singly-linked list. * struct ListNode { * ...
随机推荐
- 通过新浪ip地址库获得用户的省份、城市等信息
<script src="http://apps.bdimg.com/libs/jquery/1.11.3/jquery.min.js"></script> ...
- Android Bitmap和Canvas学习笔记 [转]
原文:http://www.cnblogs.com/feisky/archive/2010/01/10/1643460.html 位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的. ...
- taglib例子
jsp中的taglib有点类似asp.net中的customer control.自定义标签. 一个最简单的taglib使用例子:检查用户是否已经被登陆. 新建一个class: CheckLoginT ...
- IE11如何采用其他低级版本调试网页
IE9的方法: 出于未知需求,用户在安装了较高版本IE浏览器(IE9)之后,又需要使用低版本的IE(7,8),为了返回较低版本,很多用户选择(不得不)卸载新版本IE,这样显得十分不科学.实际上IE9提 ...
- FIR系统的递归与非递归实现
首先,因为FIR的脉冲响应是有限长,所以总是可以非递归实现的: 其次,也可以用递归系统来实现它. 以滑动平均做例子,最直观的想法就是,每次来一个新的值,丢掉最老的,加上最新的: y[n]=y[n-1] ...
- html中select标签获取选中value和text
$("#id").find("option:selected").text(); //获取Select选择的Text$("#id").val ...
- 访问修饰符private
private(C# 参考) private 关键字是一个成员访问修饰符. 私有访问是允许的最低访问级别. 私有成员只有在声明它们的类和结构体中才是可访问的,如下例所示: class Employee ...
- shell脚本摘要
开启监听端口的程序时,查看是否开启成功(该例子监听8983端口) #动态显示[|][/][-][\] function spinner() { local pid=$1 local delay=0.5 ...
- application in 2014
OA WEBSITE ERP ISO ANDROID EF+MVC4+CATCHE+JQuery+js+div+css+web性能优化+webservice+sql2008+设计模式+wcf+多线程 ...
- GR&R
ANOVA gauge R&R (or ANOVA gauge repeatability and reproducibility) is a measurement systems anal ...