判断链表顺序问题
来源:4-2 在链表中添加元素
慕神55941
2019-03-31
在leetcode中回答问题时做了头结点的判断
if (head.next == null || head == null)
return head;
当测试用例用空链表时,leetcode编译出错
java.lang.NullPointerException
at line 3, Solution.deleteDuplicates
at line 54, DriverSolution.helper
at line 79, Driver.main
而改变顺序时编译成功
if (head == null || head.next == null)
return head;
而我在interllij编译时两者都可以成功,因为我对Java的原理还不了解,请问老师这是为什么呢
写回答
1回答
-
if (head == null || head.next == null)
先判断head是否为空?为空,这个if直接成立了,return head
不为空,看后面的条件,head.next是否为空?
所以,在看head.next的时候,head肯定不为空了。
但是,
if (head.next == null || head == null)
先看head.next是否为空。可是此时,head可能为空,调用head.next,就会抛空指针异常。
P.S.
这不是一个编译错误,是一个运行错误。所以,你在IntelliJ下编译不会报错。但是传一个空链表进去,一样报空指针异常。
继续加油!:)
032019-09-10
相似问题