【剑指 Offer打卡】 链表 删除排序链表中的重复元素

70 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

点击 这里 可以查看更多算法面试相关内容~

一、题目描述:

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

数据范围:链表长度满足  0≤n≤1000  ,链表中的值满足 1≤val≤1000 

进阶:空间复杂度 O(n)  ,时间复杂度 O(n)

例如输入{1,2,3,3,4,4,5}时,对应的输出为{1,2,5},对应的输入输出链表如下图所示:

二、思路分析:

创建另外的链表来辅助判断重复的元素

三、AC 代码:

public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null) return head;
        ListNode cur = head;
        while (cur.next != null) {
            if(cur.val == cur.next.val) {
                cur.next = cur.next.next;
            } else {
                cur = cur.next;
            }
        }
        return head;
    }
}

class ListNode {
    public int val;
    public ListNode next;
}

总结

一点一滴