题目:
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
题解:
双指针
import java.util.ArrayList;
import java.util.*;
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution {
public boolean isPalindrome(ListNode head) {
//边界条件
if (head == null) {
return true;
}
//使用数组
List<Integer> list = new ArrayList<>();
while (head != null) {
list.add(head.val);
head = head.next;
}
//使用双指针
int left = 0;
int right = list.size() - 1;
while (left < right) {
if (!list.get(left).equals(list.get(right))) {
return false;
}
left++;
right--;
}
return true;
}
}
public class Main {
public static void main(String[] args) {
ListNode head = new ListNode(-129);
ListNode head1 = new ListNode(-129);
ListNode head2 = new ListNode(2);
ListNode head3 = new ListNode(1);
head.next = head1;
Solution p = new Solution();
boolean res = p.isPalindrome(head);
System.out.println("输出结果"+res);
}
}