0
点赞
收藏
分享

微信扫一扫

1.Spring-容器-注册

洒在心头的阳光 2024-09-21 阅读 33

思路

判断是否是回文,需要:一个指针指向头,一个指针指向尾,两个指针一边向中间靠拢,一边判断数值是否相同

对于单链表,不方便获得pre,如果将节点放进 数组/list ,数组/list可以直接获得索引,,那么就能方便很(注意!!这是单链表需要访问pre时,常用的解决方法)

做法:

1.链表放进list中

2.设置一个指针指向头,一个指针指向尾

3.遍历size/2遍,两个指针一边判断数值是否相同,一边向中间靠拢,

代码

import java.util.ArrayList;
import java.util.Objects;

public class Main {
    public static void main(String[] args) {

    }

    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():有序,有索引,长度可变
            //数组有索引,长度不可变
            ArrayList<Integer> list = new ArrayList<>();
            ListNode cur=head;
            while (cur != null) {
                list.add(cur.val);
                cur = cur.next;
            }

            //遍历size/2遍,,一个指针指向头,,一个指针指向尾
            //判断两个指针指向是否相同
            int size = list.size();
            int pre=0;
            int last=size-1;
            for (int i = 1; i <=size/2 ; i++) {
                //判断两个指针指向是否相同
                if (list.get(pre).equals(list.get(last))) {
                    //如果相同,移动指针,继续判断
                    pre++;
                    last--;
                }
                else{
                    return false;
                }
            }
            return true;
        }
    }
}

记录

总结

对于单链表,如果需要获得pre,可以节点放进 数组/list ,数组/list可以直接获得索引,,那么就能方便很(注意!!这是单链表需要访问pre时,常用的解决方法)

举报

相关推荐

0 条评论