本算法来自于leetCode的一道题目《回文链表》(简单难度)
题目为:给你一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
提示:
- 链表中节点数目在范围
[1, 105]
内 0 <= Node.val <= 9
思路:
本题主要考察链表的使用,入参为一个自定义链表ListNode head 我们可以采用一种粗爆的解法,先遍历一次链表,吧参数全部放入List链表内,然后设置头尾2个指针,对比头尾数据是否一致,一致输出true反之输出false。
代码如下:
public boolean isPalindrome(ListNode head) {
List<Integer> num = new ArrayList<>();
while (head != null){
num.add(head.val);
System.out.println(head.val);
head = head.next;
}
//创建头尾指针来对比
int headNum = 0;
int tailNum = num.size()-1;
while (headNum < tailNum){
if (!num.get(headNum).equals(num.get(tailNum)))return false;
headNum++;tailNum--;
}
return true;
}
本题确实属于简单难度的范围,只要熟悉链表操作,解题可谓是轻轻松松。