作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/solution/shan-chu-pai-xu-lian-biao-zhong-de-zhong-oayn/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
个人微改:
import java.util.Scanner;
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 void addNode(int e) {
ListNode node = new ListNode(e);
if(this.next == null) {
this.next = node;
}else {
this.next.addNode(e);
}
}
public void nodePrint() {
System.out.print(this.val);
if(this.next!=null) {
System.out.print("-->");
this.next.nodePrint();
}
}
}
class duplicate{
public ListNode deleteDuplicates(ListNode head) {
if(head == null) return head;
ListNode dummy = new ListNode(0,head);
ListNode cur = dummy;
while(cur.next!=null && cur.next.next!=null) {
if(cur.next.val == cur.next.next.val) {
int x = cur.next.val;
while(cur.next!=null && cur.next.val==x) {
cur.next = cur.next.next;
}
}else {
cur = cur.next;
}
}
return dummy.next;
}
}
public class RemoveDuplicatesFromSortedListII {
public static void main(String args[]) {
System.out.println("please enter the capcity :");
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
System.out.println("please enter the data :");
int[] a = new int[m];
ListNode L1 = new ListNode(0);
for(int i=0;i<m;i++) {
a[i] = sc.nextInt();
L1.addNode(a[i]);
}
duplicate hei = new duplicate();
L1 = hei.deleteDuplicates(L1.next);
System.out.println("the linked list with duplicate elements removed :");
L1.nodePrint();
sc.close();
}
}

本文介绍了一种从已排序链表中移除所有数值重复出现的方法,并提供了一个Java实现示例。该方法通过引入虚拟头节点简化边界条件处理,并使用递归方式构建链表节点。
4787

被折叠的 条评论
为什么被折叠?



