【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】

【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】


【LeetCode-面试算法经典-Java实现】【所有题目目录索引】

原题

  Given a sorted linked list, delete all duplicates such that each element appear only once.

  For example,

  Given 1->1->2, return 1->2.

  Given 1->1->2->3->3, return 1->2->3.

题目大意

  给定一个单链表,删除重复的元素,相同的只保留一个。

解题思路

  使用一个指针指向链表的头,如果下一个与当前的结点相等则删除,直到遇到一个不相同的,则指针指向这个新的结点,重复操作,直到所有的结点都处理完。

代码实现

结点类

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) {
        val = x;
        next = null;
    }
}

算法实现类

public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode point;
        ListNode tail = head; // 指向新结点的尾部,开始时新链只有一个元素,就是链头

        if (head != null) {
            point = head.next; // 指向另一个链的头部
            while ( point != null) { // 另一个链还未到末尾

                if (tail.val != point.val) { // 如果与尾节点不相同,就将不相同的节点链接到tail的下一个位置
                    tail.next = point;
                    tail = tail.next; // 重新指向链尾
                }

                point = point.next;
            }

            tail.next = null; // 链尾指向空
        }

        return head;
    }
}

评测结果

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

特别说明

欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47270975

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

时间: 2024-10-11 21:11:32

【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】的相关文章

[LeetCode] 80. Remove Duplicates from Sorted Array II ☆☆☆(从有序数组中删除重复项之二)

https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/discuss/27976/3-6-easy-lines-C%2B%2B-Java-Python-Ruby 描述 Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given sorted array A = [1,1

【LeetCode每天一题】Remove Duplicates from Sorted List(移除有序链表中的重复数字)

Given a sorted linked list, delete all duplicates such that each element appear only once. Example 1: Input: 1->1->2 Output: 1->2 Example 2: Input: 1->1->2->3->3 Output: 1->2->3 思路 对于链表类的题目主要考的是指针的操作,他需要对指针的指向节点有正确的操作.这道题我们可以使用从

Remove Duplicates from Sorted List 移除有序链表中的重复项

Given a sorted linked list, delete all duplicates such that each element appear only once. For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3. 移除有序链表中的重复项需要定义个指针指向该链表的第一个元素,然后第一个元素和第二个元素比较,如果重复了,则删掉第二个元素,

[CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项

2.1 Write code to remove duplicates from an unsorted linked list.FOLLOW UPHow would you solve this problem if a temporary buffer is not allowed? 这道题让我们移除无序链表中的重复项,在LeetCode中有两道类似的题是Remove Duplicates from Sorted List 移除有序链表中的重复项 和 Remove Duplicates fr

【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】

[092-Reverse Linked List II(反转单链表II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->

【LeetCode-面试算法经典-Java实现】【206-Reverse Linked List(反转一个单链表)】

[206-Reverse Linked List(反转一个单链表)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 代码下载[https://github.com/Wang-Jun-Chao] 原题 Reverse a singly linked list. 题目大意 反转单链表. 解题思路 使用头插法. 代码实现 结点类 public class ListNode { int val; ListNode next; ListNode(int x) { val = x;

[LeetCode]题解(python):083 - Remove Duplicates from Sorted List

题目来源 https://leetcode.com/problems/remove-duplicates-from-sorted-list/ Given a sorted linked list, delete all duplicates such that each element appear only once. For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->

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

[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->

【LeetCode-面试算法经典-Java实现】【023-Merge k Sorted Lists(合并k个排好的的单链表)】

[023-Merge k Sorted Lists(合并k个排好的的单链表)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题目大意 合并k个排好的的单链表.分析和描述它的复杂性. 解题思路 使用小顶堆来实现,先将K个链表的头结点入堆,取堆顶元素,这个结点就是最小的,接