自学内容网 自学内容网

【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时,常用的解决方法)


原文地址:https://blog.csdn.net/m0_74814985/article/details/142413669

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!