一、题目
给你一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
输入:head = [1,2,2,1] 输出:true
二、思路
这道题可以用数据结构中的栈来实现顺逆序比较,就是将链表结点逐个存入栈,再从头结点开始遍历,与栈弹出来的值进行比较,若遍历完均符合head.val === stack.pop().val,则返回true
三、代码展示
var isPalindrome = function(head) {
let stack = []
let temp = head
while(temp) {
stack.push(temp)
temp = temp.next
}
while(head) {
if(head.val !== stack.pop().val) {
return false
}
head = head.next
}
return true
};
四、知识回顾
数据结构:栈是一种后进先出的结构,利用它可以很好的解决正序倒序的问题,再利用js原生的方法,就可以模拟出栈的进栈出栈操作
方法 | 描述 |
---|---|
pop() | 删除数组的最后一个元素并返回删除的元素。 |
push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |