回文链表
2026年3月26日小于 1 分钟
回文链表
使用的方法
ArrayList:将链表的值存储在一个数组列表中,然后使用双指针方法检查是否是回文。ArrayList.get():使用ArrayList的get()方法传入索引来访问元素。
解题思路
双指针法
- 首先,创建一个空的
ArrayList来存储链表中的值。 - 然后,遍历链表,将每个节点的值添加到
ArrayList中。 - 接下来,使用两个指针
l和r分别指向ArrayList的开头和结尾,进行比较。 - 如果
ArrayList中的元素在l和r位置不相等,说明链表不是回文,返回false。 - 如果
l和r位置的元素相等,则将l向右移动,r向左移动,继续比较,直到l不再小于r。
代码实现
/**
* 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) {
List<Integer> arr = new ArrayList<Integer>();
ListNode current = head;
while(current != null){
arr.add(current.val);
current = current.next;
}
int l = 0, r = arr.size()-1;
while(l<r){
if(arr.get(l) != arr.get(r))
return false;
l++;
r--;
}
return true;
}
}