代码编织梦想

1.题目

给定一个已排序链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

2.示例

在这里插入图片描述

输入:head = [1,1,2]
输出:[1,2]

在这里插入图片描述

输入:head = [1,1,2,3,3]
输出:[1,2,3]

3.答案

注意: 链表已升序排列。 只用检查相邻元素是否重复,重复删除就可。

①递归

停止条件:链表为空或者只有一个元素
递归内容:链头之后结点删除重复值
返回值:返回新的头结点, 若头结点与下一结点重复,则返回下一节点,否则返回原头结点

 ListNode* deleteDuplicates(ListNode* head) {
        if(!head||!head->next) return head;
        head->next=deleteDuplicates(head->next);
        return  head->val==head->next->val?head->next:head;
    }

②迭代

双指针,不断检查相邻结点是否重复。

 ListNode* reverseList(ListNode* head) {
           if(!head||!head->next) return head;
        ListNode *pre=head,*cur=head->next;
        while(pre&&cur){
        // cur重复,删除cur
            if(pre->val==cur->val){
                pre->next=cur->next;
                cur=cur->next;
            }else{
                pre=pre->next;
                cur=cur->next;
            }
        }
        return head;

    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_51758329/article/details/128014168

83. 删除排序链表中的重复元素--PYTHON-爱代码爱编程

自己1:行吧,时间已经击败99%的人了,不想优化了,bingo # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None c

83. 删除排序链表中重复元素-爱代码爱编程

83. 删除排序链表中的重复元素 难度:简单 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3]

83. 删除排序链表中的重复元素【简单】-爱代码爱编程

83. 删除排序链表中的重复元素 题目描述: 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 提示

leetcode: 83. 删除排序链表中的重复元素(C语言)-爱代码爱编程

struct ListNode* deleteDuplicates(struct ListNode* head){ if (NULL == head) return head; struct ListNode *new_head = head; struct ListNode *next; while (head->

Leetcode题解 83.删除排序链表中的重复元素(C++)-爱代码爱编程

题目:      提示:由于CSDN不支持Leetcode将图片转化为类似ppt形式的界面,笔者推荐去LeetCode看本题解     LeetCode题解链接:83.删除排序链表中的重复元素     存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。 示例1: 输入:

【力扣python】83. 删除排序链表中的重复元素-爱代码爱编程

题目描述: 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例: 思路: 1、去掉边缘情况,即:链表为空的情况。 2、遍历链表找到重复的值设为x。 3、再次遍历链表找到其他值等于x的节点并删除。 4、返回结果。 代码: class Solution: def de

83. 删除排序链表中的重复元素(Java)Leecode-爱代码爱编程

解题思路: 同数组的删除重复元素。26. 删除有序数组中的重复项 public ListNode deleteDuplicates(ListNode head) { if(head == null) return null; ListNode slow = head, fast = head;

leetcode c++ 83.删除排序链表中的重复元素_滑雪圈的小码人的博客-爱代码爱编程

题目 给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。 示例1: 输入:head = [1,1,2] 输出:[1,2] 示例2: 输入:head = [1,1,2,3

(leetcode刷题)83. 删除排序链表中的重复元素(c语言)_troy euan的博客-爱代码爱编程

题目描述:   示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 提示: 链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序 排列 分析: 该链表为升序,重复元素

leetcode hot 100 —— 23.合并k个升序链表_hdu-五七小卡的博客-爱代码爱编程

题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思路 在做本题之前,先考虑一下,如何合并两个有序链表,见 21.合并两个有序链表 最直接的思路就是,用一

剖分(树形差分)_wyw___的博客-爱代码爱编程

E-剖分_牛客小白月赛62 (nowcoder.com) 题目描述 牛牛有一颗包含n个结点的二叉树,这些结点编号为1 ...n。这颗树被定义为:1、以结点1为根。 2、编号为α结点的两个儿子编号分别为:2 xa和2×巴+ 1。3、每个结点的权重初始都为0。 牛牛接下来会对这颗树进行m次操作,操作的格式是以下四种之—: 1、op a(这里op = 1)代表

leetcode栈和队列练习-爱代码爱编程

文章目录 前言1.力扣20. 有效的括号1.题目分析 2.代码示现2.力扣225. 用队列实现栈1.题目分析2.代码实现 3.力扣232. 用栈实现队列1.题目分析2.代码实现 4.力扣622

c++类与对象(一)-爱代码爱编程

目录 一、面向过程和面向对象认识 二、类的引入 三、类的定义 类的两种定义方式: 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1 如何计算类对象的大小​​​​​ 7.2 类对象的存储方式 7.3 结构体内存对齐规则 八、this指针 8.1 this指针的引出