LC 回文链表
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 回文链表相关的知识,希望对你有一定的参考价值。
LC 回文链表
- 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
【思路】 - 1 先计算出链表的长度;便于创建数组时确定大小
- 2 遍历列表,把value值保存到数组里面;
- 3 双指针遍历数组
【代码】
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head) {
ListNode temp = head;
int cnt=0;
while (temp !=null) //求链表长度
{
cnt ++;
temp = temp.next;
}
int arr[] = new int[cnt]; //将列表的value值保存到数组里面
for (int i = 0; i < cnt; i++) {
arr[i] = head.val;
head = head.next;
}
boolean flag = true; //默认是真,如果链表是空的,就默认返回true
for (int i = 0,j = cnt - 1; i < j; i++,j--) //双指针遍历数组
{
if (arr[i] !=arr[j])
{
flag = false;
break;
}
}
return flag;
}
}
以上是关于LC 回文链表的主要内容,如果未能解决你的问题,请参考以下文章
[M链表] lc725. 分隔链表(模拟+代码优化+代码实现)