(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 { * ...
随机推荐
- 解决json包含html标签无法显示的问题
要是在json中包含html标签的话,在js接收数据的时候就会出现问题,导致接收失败. 所以在java端,对json包含有html标签的句子先进行转义. package com.alibaba.int ...
- JdbcUtils
JdbcUtils 项目结构 db.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql:///myTest username=r ...
- linux创建git远程仓库
root用户 ============================ // 创建用户 >adduser newuser // 修改用户的密码 >passwd newuser // 设置权 ...
- trunc函数
date 为必要参数,是输入的一个日期值 fmt 参数可忽略,是日期格式,用以指定的元素格式来截去输入的日期值.忽略它则由最近的日期截去 下面是该函数的使用情况: trunc(sysdate,'yyy ...
- form 转json,将form表单中的数据序列化数组后转换为Json
页面中引用了jquery,第一想到的就是序列化,但是序列化后的表单字段为a=1&b=2这种. 这里写一个jquery的扩展方法 $.fn.serializeObject = function( ...
- 给windows的VM更换网卡到VMNET3从E1000
1. Login to vCenter via vSphere client. go to the vm 2. create a 1G new disk(SCSI 1:2) for the VM te ...
- Android界面布局基本知识简述
Android手机操作系统在模拟器中进行相关的编写,可以帮助我们实现各种功能需求.尤其是在界面的操作方面显得更为突出.在这里我们就可以对Android界面布局的相关操作来对这方面的知识进行一个深入的了 ...
- [UEditor]百度编辑器配置总结
前端配置文件ueditor.config.js 前端有两个重要的配置属性: UEDITOR_HOME_URL: 配置百度编辑器的资源目录路径,你可以手动指定此路径,默认是有URL变量指定,而URL变量 ...
- [CSS]去除inline-block元素间距的几种方法
当我们使用inline-block 时,会出现空白间距问题. 但这些间距对我们的布局,或兼容性产生影响,我们需要去除它,该怎么办?下面简单介绍几种方法: 1.去掉html元素之间的空格,直接写在一行. ...
- BIP_开发案例04_通过BI Publisher实现打印报表的二维码(案例)(待整理)
2014-01-01 Created BaoXinjian