小小牛ing 2023-03-02 11:23 采纳率: 25%
浏览 20
已结题

leetcode回文链表


/**
 * Definition for singly-linked list.
 * 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) {
        //1.寻找中间节点
        ListNode mid = findMidNode(head);
        //2.反转后半部分链表
        mid = reverseList(mid);
        ListNode temp = head;
        //3.比较值
        while(temp != null){
            if(temp.val != mid.val) {
                return false;
            }
            temp = temp.next;
            mid = mid.next;
        }
        return true;    
    }
    //寻找中间节点
    public ListNode findMidNode(ListNode head) {
        ListNode slow = head;
        ListNode fast = head;
        while(fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        if(fast != null)
            return slow.next;
        return slow;
    }
    //反转链表
    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;
        while(cur != null) {
            ListNode temp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = temp;
        }
        return pre;
    }
}

leetcode回文链表,这样写为什么会出现空指针异常?

  • 写回答

3条回答 默认 最新

  • Web Security Loop 2023-03-02 12:22
    关注
    • 在 mid = reverseList(mid); 这一行,如果 mid 为 null,那么在调用 reverseList 方法时,会出现空指针异常。这种情况可能发生在输入的链表为空或只有一个节点时。为了避免这种情况,可以在调用 reverseList 方法前,先判断 mid 是否为 null。

    • 在 if(temp.val != mid.val) 这一行,如果 mid 为 null,那么在访问 mid.val 时会出现空指针异常。这种情况可能发生在输入的链表长度为奇数时,且在 findMidNode 方法中,指针 fast 到达链表末尾时的位置是 null。为了避免这种情况,可以在 findMidNode 方法返回 null 时,特殊处理。例如,可以在 isPalindrome 方法中增加一个条件判断,判断 mid 是否为 null,如果是,则直接返回 false。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 创建了问题 3月2日

悬赏问题

  • ¥15 用lstm来预测股票价格
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上