LeetCode 876:当循环抛出空指针异常时?



我正在研究第 876 号的 leetcode 问题,它说:

给定一个非空的、带有头节点头的单向链表,返回链表的中间节点。 如果有两个中间节点,则返回第二个中间节点。

这是我到目前为止写的,但它在 while 循环中抛出一个空指针异常。我认为由于 while 循环每次在执行任何操作之前都会检查 node.next.next 是否为空,因此它不会引发异常。我做错了什么?

* 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 ListNode middleNode(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while(fast.next.next != null) { //null pointer exception on this line
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
}

只需将条件更新为以下内容:

while(fast != null && fast.next != null)

将条件修改为 它将涵盖循环中slow.nextfast引用的空检查。

while(null!=fast.next && fast.next.next != null) {

相关内容

  • 没有找到相关文章

最新更新