You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode第83题中head链表的实现、初始化位置及代码示例

LeetCode 第83题:有序链表去重相关问题解答

一、head链表的实现与初始化

  • 题目中的ListNode是链表节点的标准定义,LeetCode会预设这个类,本地测试时你需要自行定义:
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; }
}
  • head是链表的头节点,在LeetCode平台上,它由测试用例框架自动初始化:框架会根据题目输入的数组(比如[1,1,2,3,3])构建对应的链表,再将头节点作为参数传入deleteDuplicates方法。
  • 如果你在本地编辑器测试,需要手动初始化head——要么逐个创建节点并串联,要么写辅助方法将数组转为链表。

二、本地常规编辑器中的完整代码示例

以下是包含节点定义、链表初始化、去重方法及测试逻辑的完整代码:

public class RemoveDuplicatesFromSortedList {
    // 链表节点类
    public static class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }

    // 有序链表去重核心方法
    public static ListNode deleteDuplicates(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode node = head;       
        while(head != null && head.next != null){
            if(head.val == head.next.val){
                head.next = head.next.next;
            } else {
                head = head.next;
            }
        }      
        return node;
    }

    // 辅助方法:数组转链表,用于初始化head
    public static ListNode arrayToList(int[] arr) {
        if (arr == null || arr.length == 0) return null;
        ListNode head = new ListNode(arr[0]);
        ListNode current = head;
        for (int i = 1; i < arr.length; i++) {
            current.next = new ListNode(arr[i]);
            current = current.next;
        }
        return head;
    }

    // 辅助方法:打印链表,验证结果
    public static void printList(ListNode head) {
        ListNode current = head;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
        System.out.println();
    }

    // 测试入口
    public static void main(String[] args) {
        // 初始化测试链表:1->1->2->3->3
        int[] testArr = {1, 1, 2, 3, 3};
        ListNode head = arrayToList(testArr);
        
        System.out.println("原链表:");
        printList(head);
        
        ListNode result = deleteDuplicates(head);
        
        System.out.println("去重后的链表:");
        printList(result);
    }
}

代码说明

  • ListNode类定义了链表节点的基本结构,包含节点值和下一个节点的引用。
  • arrayToList方法实现了数组到链表的转换,是本地初始化head的便捷方式。
  • printList方法用于输出链表内容,方便验证去重效果。
  • main方法完成了测试链表的初始化、去重调用和结果展示。

内容的提问来源于stack exchange,提问作者vegaLDN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:05:19