【d46】【Java】【力扣】234.回文链表

思路

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

对于单链表,不方便获得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时,常用的解决方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值