【java】面试题 02.06. 回文链表---时间复杂度o(N),空间复杂度O(1)!!!
发布日期:2021-05-07 02:22:51 浏览次数:20 分类:精选文章

本文共 659 字,大约阅读时间需要 2 分钟。

编写一个函数,检查输入的链表是否是回文的。

示例 1:

输入: 1->2

输出: false
示例 2:

输入: 1->2->2->1

输出: true

进阶:

你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
在这里插入图片描述

代码:public boolean isPalindrome(ListNode head) {   			ListNode p=head,p1=head;			int i=0,j=1;			while(p!=null) {   				i++;				p=p.next;			}			if(i==1) {   				return true;			}			if(i%2==0) {   				j=2;			}			int k=0;			p=head;			head=null;			while(p!=null) {   				k++;				if(k<=(i+1)/2) {   					if(j==2||j==1&&k!=(i+1)/2) {   					   p1=p.next;					   p.next=head;					   head=p;					   p=p1;					   continue;					}				}else {   					if(head.val!=p.val) {   						return false;					}					head=head.next;				}				p=p.next;			}			return true;		}
上一篇:【java】377. 组合总和 Ⅳ---查找动态规划的规律,快速解决问题!!!
下一篇:【java】368. 最大整除子集---使用动态规划,快速解决子问题!!!

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月29日 17时35分02秒