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
相关产品推荐
相关产品推荐

