面试题 02.06. 回文链表
解题思路
1.第一次遍历得到链表的size
2.初始化大小为size的数组,并且发起第二次遍历,进行数组赋值
3.遍历数组,进行收尾对比,是否相等
解题遇到的问题
无
后续需要总结学习的知识点
能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
##解法
class Solution {
public boolean isPalindrome(ListNode head) {
ListNode t = head;
int i = 0;
while (t != null) {
i++;
t = t.next;
}
t = head;
int[] temp = new int[i];
i = 0;
while (t != null) {
temp[i++] = t.val;
t = t.next;
}
for (int k = 0, j = temp.length - 1; k <= j; k++, j--) {
if (temp[k] != temp[j]) {
return false;
}
}
return true;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
}
网友评论