import java.util.*; public class Main { /* 思路 正常情况可以建立一个hashset用于储存已有数据 如果没有重复则指针往后挪 并且把数字存入hashset 如果重复 则直接删除 继续遍历;o(n) 没有缓存的方式是两层循环 第一层用于遍历整个list 第二层用于遍历第一层指针所在位置的后面的list 有重复的直接删掉;o(n^2); */ public static void removeDup(ListNode node) { while(node != null) { ListNode cur = node; while(cur.next != null) { if(cur.next.val == node.val) { cur.next = cur.next.next; } else { cur = cur.next; } } node = node.next; } return; } public static void main(String[] args) { ListNode node = new ListNode(1); node.next = new ListNode(2); node.next.next = new ListNode(1); node.next.next.next = new ListNode(3); node.next.next.next.next = new ListNode(2); node.next.next.next.next.next = new ListNode(5); printList(node); removeDup(node); printList(node); return; } //自己创建的结构要自己注意打印; public static void printList(ListNode node) { while(node != null) { System.out.print(node.val); node = node.next; } System.out.println('.'); } }
public class ListNode { public int val; public ListNode next; public ListNode(int val) { this.val = val; } }