[剑指offer] 删除链表中重复的结点

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

解题思路

  1. 首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况
  2. 设置 first ,second 指针, first 指针指向当前确定不重复的那个节点,而second指针相当于工作指针,一直往后面搜索。 ![](

参考代码

/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead == null || pHead.next == null)
            return pHead;
        ListNode head = new ListNode(-1);
        head.next = pHead;
        ListNode first = head;
        ListNode second = first.next;
        while(second != null){
            if(second.next != null && second.val == second.next.val){
                while(second.next != null && second.val == second.next.val){
                    second = second.next;
                }
                first.next = second.next;
            }else{
                first = first.next;
            }
            second = second.next;
        }
        return head.next;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏书山有路勤为径

链表求环

LeetCode 141. Linked List Cycle 142.Linked List Cycle II

892
来自专栏郭耀华‘s Blog

剑指offer 第九天

35.数组中的逆序对 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对10...

2684
来自专栏计算机视觉与深度学习基础

Leetcode 82 Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leavi...

2025
来自专栏书山有路勤为径

链表逆序

1.构造5个节点a,b,c,d,e,并对它们进行初始化; 2.将a,b,c,d,e,5个节点连接在一起

1004
来自专栏calmound

Linked List Cycle

问题:判断链表是否有环。 分析:利用快慢指针slow,fast          slow指针每次走一步,fast指针每次走两步,倘若存在环,则slow和fas...

2884
来自专栏女程序员的日常

LeetCode之Add Two Numbers

  先分位求总和得到 totalsum,然后再将totalsum按位拆分转成链表;

701
来自专栏desperate633

LintCode 删除排序链表中的重复数字 II题目分析代码

给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。 样例 给出 1->2->3->3->4->4->5->null,返回 1->2->5->...

901
来自专栏计算机视觉与深度学习基础

Leetcode 61 Rotate List

Given a list, rotate the list to the right by k places, where k is non-negative...

21010
来自专栏desperate633

LeetCode 160. Intersection of Two Linked Lists题目分析

请写一个程序,找到两个单链表最开始的交叉节点。 ** 注意事项 ** 如果两个链表没有交叉,返回null。 在返回结果后,两个链表仍须保持原有的结构。 ...

992
来自专栏mukekeheart的iOS之旅

No.002 Add Two Numbers

Add Two Numbers Total Accepted: 160702 Total Submissions: 664770 Difficulty: Med...

2495

扫码关注云+社区

领取腾讯云代金券