Remove Duplicates from Sorted List II(排序链表中删除重复元

【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】

分类:LeetCode

【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题

  Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.   For example,   Given 1->2->3->3->4->4->5, return 1->2->5.   Given 1->1->1->2->3, return 2->3.

题目大意

  给定一个排好序的单链表,删除所有重复的元素。只留下只有一个值的元素。

解题思路

  给链表接上一个辅助结点root,root接到原来的头部,引用这个头部和辅助的指针,对重重的元素进行删除。

代码实现

算法实现类

public class Solution {public ListNode deleteDuplicates(ListNode head) {ListNode root = new ListNode(0); // 头结点root.next = head;ListNode p = head;ListNode q = root; // 记录最后一个没有重复的元素,开始指向头结点int delta = 0; // 元素重复个数while (p != null && p.next != null) {if (p.val == p.next.val) { // 如果相邻两个数相同delta++;p = p.next; // 移动到下一个结点} else { // 如果相邻两个结点不相同if (delta == 0) { // 值为p.val的结点没有重复q.next = p; // 链接到没有复的元素q = p; // 指向最后一个未重复的元素p = p.next; // 移动到下一个结点} else { // 值为p.val的结点有重复p = p.next; // 移动到下一个元素q.next = p.next; // 去掉重复的元素delta = 0; // 元素重复个数设置为0}}}if (delta != 0) { // 如果最后一个元素是复的就去掉q.next = null;} else { // 如果没有重复就开链接到表尾q.next = p;}return root.next;}}评测结果

  点击图片,,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。

特别说明欢迎转载,转载请注明出处【】

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】下一篇【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】

顶2踩0

旅行要学会随遇而安,淡然一点,

Remove Duplicates from Sorted List II(排序链表中删除重复元

相关文章:

你感兴趣的文章:

标签云: