LeetCode26|回文链表

时间:2022-07-23
本文章向大家介绍LeetCode26|回文链表,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1,问题简述

编写一个函数,检查输入的链表是否是回文的。

2,示例

示例 1:

输入:1->2
输出:false 
示例 2:

输入:1->2->2->1
输出:true 

3,题解思路

数据转换

4,题解程序

 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class IsPadlindromeTest {
    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode l2 = new ListNode(2);
        ListNode l3 = new ListNode(2);
        ListNode l4 = new ListNode(1);
        l1.next = l2;
        l2.next = l3;
        l3.next = l4;
        boolean padlindrome = isPadlindrome(l1);
        System.out.println("padlindrome = " + padlindrome);

    }

    public static boolean isPadlindrome(ListNode head) {
        if (head == null || head.next == null) {
            return true;
        }
        List<Integer> list = new LinkedList<>();
        ListNode tempNode = head;
        while (tempNode != null) {
            list.add(tempNode.val);
            tempNode = tempNode.next;
        }
        int start = 0;
        int end = list.size() - 1;
        while (start <= end) {
            if (!list.get(start).equals(list.get(end))) {
                return false;
            } else {
                start++;
                end--;
            }
        }
        return true;
    }
}

5,总结

这道题的解法虽然解法比较简单,但是耗时多,这里就不多说了,不过也通过了题目的测试用例,不知道后面有没有时间来做一下这个题的优化,目前这样的题都是采用很常规的思路来解的,如同功能需求一样,功能先做出来,优化可以放在后面功能做完再去优化,这也是自己的一点思考,后面自己确实要看下这方面的思路是否可以达到稍微优化