LeetCode26|回文链表

2020-08-25 11:22:44 浏览数 (1)

1,问题简述

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

2,示例

代码语言:javascript复制
示例 1:

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

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

3,题解思路

数据转换

4,题解程序

代码语言:javascript复制
 
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,总结

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

0 人点赞