领扣(LeetCode)回文链表 个人题解
2024-09-01 17:49:46
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
一个最暴力的做法,遍历一次,内容保存在数组内,然后判断是否回文。
遇到一个比较严重的问题需要记录一下,使用Vector类时,设定的类型为Integer,必须使用Equals函数来判断两数是否相等,使用==则不行。奇怪的是,只有部分判断是错误的。
查阅百度,发现了问题所在:
这种行为差异的原因是JVM维护Integer范围为-128到127 的对象的缓存(可以使用系统属性“java.lang.Integer.IntegerCache.high”
或JVM来覆盖上限值参数“-XX:AutoBoxCacheMax = size”)。对于此范围内的值,Integer.valueOf()将返回缓存的值,而不是创建一个新的值。
所以,虽然没有达到题目的进阶要求使用O(1)的空间复杂度完成问题,但还是学习到了新的知识点。
代码如下:
class Solution {
public boolean isPalindrome(ListNode head) {
Vector<Integer> vector=new Vector<>();
if(head==null)
return true;
else
vector.add(head.val);
while(head.next!=null)
{
vector.add(head.next.val);
head=head.next;
}
int left=0,right=vector.size()-1;
while(left<=right)
{
System.out.println(vector.get(left)+"***"+vector.get(right));
if(vector.get(left).equals(vector.get(right)))
{
left++;
right--;
continue;
}
else
return false;
}
return true;
}
}
最新文章
- 浅谈HTTP中Get与Post的区别(转)
- MVC UpdateModel的未能更新XXXXX的类型模型
- c# 正则表达式分组
- Linux下查看mysql、apache是否安装,安装,卸载等操作
- Axure RP介绍
- iOS问题处理:如何在Mac下显示Finder中的所有文件
- laravel 自定义命令
- Code for the Homework1 改进
- mysql之select+五种子句的理解
- PHP中长连接的实现
- Python 3中bytes和str的分别
- 【Robot Framework 介绍】总纲
- jquery不限图片焦点图
- 删除DriverStore\FileRepository文件夹后,设备驱动无法安装,提示“没有为设备信息集或元素选择驱动程序(代码 28)”的解决办法
- error C4996: &#39;strcpy&#39;: This function or variable may be unsafe.
- 与班尼特&#183;胡迪一起攻破浮空城 (HZNU-2264)
- radio选中与不选中
- MySQL下创建数据库以及授权用户
- 委托、事件、匿名方法、Lambda
- Python--001