java中为什么要定义一个ListNode节点接收传入的ListNode参数

问题遇到的现象和发生背景

img


我直接使用这个传入的head参数来使用结果不对

问题相关代码,请勿粘贴截图

leetcode第83题目
输入的链表是1,1,2
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head==null) return head;
ListNode a=head;
while (a.next!=null){
if (a.val==a.next.val){
a.next=a.next.next;
}
}
return head;
}
}
这样写没有问题
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head==null) return head;

    while (head.next!=null){
        if (head.val==head.next.val){
            head.next=head.next.next;
        }
    }
    return  head;
}

}
这样写输出的是一个1了结果不对

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你不用另一个指向head的话,你遍历每次要head=head.next,最终你返回是head都不是指向最初的节点了

明白了,因为在最后返回了head时返回的是在2的那个点

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632