删除排序链表中重复的元素
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
1 public ListNode deleteDuplicates(ListNode head) { 2 // 初始化辅助节点 3 ListNode listNode = new ListNode(0); 4 listNode.next = head; 5 // 初始化辅助节点指针 6 ListNode currentNode = listNode; 7 // 通过移动当前指针 currrentNode 来循环遍历链表 8 while(currentNode.next != null && currentNode.next.next != null) { 9 // 判断当前节点的下一个节点(真实链表的头节点)的值与下下个节点的值是否相同 10 if(currentNode.next.val == currentNode.next.next.val) { 11 // 初始化待删节点,即将重复的节点视为单独的一个链表 12 // 有重复就将指向待删节点的指针往后移,直到指向待删链表的最后一个节点 13 ListNode tempNode = currentNode.next; 14 while(tempNode != null && tempNode.next != null && tempNode.val == tempNode.next.val) { 15 tempNode = tempNode.next; 16 } 17 // 将待删接节点的前节点指针指向 tempNode 的后一个节点,即可实现删除所有重复节点 18 currentNode.next = tempNode.next; 19 }else { 20 // 继续移动当前节点指针,进入下一个循环来继续判断链表中是否有相邻重复的节点 21 currentNode = currentNode.next; 22 } 23 } 24 // 返回真实链表的头节点 25 return listNode.next; 26 }

浙公网安备 33010602011771号