LeetCode:83和82.删除排序链表中的重复元素I,II

news2025/4/17 5:15:40

这两题算是链表的基础题,就遍历删除没啥特点,

83甚至不需要考虑第一个结点的特殊情况,属实是名副其实的easy了

LeetCode:21.合并两个有序链表之第一次的特殊情况-CSDN博客

83. 删除排序链表中的重复元素 - 力扣(LeetCode)

82. 删除排序链表中的重复元素 II - 力扣(LeetCode) 

目录

题目:

​编辑 思路:

代码+注释:

83:

82:

 每日表情包:


题目:

 思路:

遍历,就看你做的熟不熟悉,快不快,由于是遍历,也没开辟新的空间,所以是时O(n),空O(1)

代码+注释:

83:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* deleteDuplicates(struct ListNode* head) {
    struct ListNode* pfast = head, *pslow = head;
    //本来想写个双指针,不知道起什么名字,就起了个快慢,不过这里的实现更像是pslow 为pcur之意,pfast为ptmp之意
    //pcur是当前指针之意,ptmp为临时指针之意
    while(pslow && pslow->next){
        pfast = pslow->next;
        if(pfast->val == pslow->val){
            pslow->next = pfast->next;
            free(pfast);
        }
        else{
            pslow = pslow->next;
        }
    }
    return head;
}
82:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* deleteDuplicates(struct ListNode* head) {
    //打眼一看就知道影响到了第一个结点,
    //虽然内心一直想尝试一下造个二级指针,存head来玩,不过还是以后玩,现阶段先熟悉基本玩法
    //写个正规一点的malloc吧
    struct ListNode* ptmp = (struct ListNode*)malloc(sizeof(struct ListNode));
    assert(ptmp);
    struct ListNode* phead = ptmp;
    ptmp = NULL;
    phead->next = head;
    //现有phead 和ptmp
    struct ListNode* pcur = phead;
    //这次相比于删除排序链表中的重复元素I就明现舒服多了
    //思路就是遍历删除,就是考虑要造几个变量,
    while(pcur && pcur->next && pcur->next->next){
        phead->val = pcur->next->val;
        if(pcur->next->val == pcur->next->next->val){
            while(pcur && pcur->next){
                ptmp = pcur->next;
                if(phead->val == pcur->next->val){
                    pcur->next = pcur->next->next;
                    free(ptmp);
                }
                else{
                    break;
                }
            }
        }
        else{
            pcur = pcur->next;

        }
    }
    ptmp = phead->next;
    free(phead);
    return ptmp;
}

 每日表情包:

点赞点赞……点赞…求求啦!一个免费的赞可以让我出产更多的……水……文 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1447413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easyrce解析

先看网页 代码审计: error_reporting(0); :关闭报错,代码的错误将不会显示 highlight_file(__FILE__); :将当前文件的源代码显示出来 eval($_GET[url]); :将url的值作为php代码执行 解题: 题目既然允许…

备战蓝桥杯---动态规划(入门1)

先补充一下背包问题: 于是,我们把每一组当成一个物品,f[k][v]表示前k组花费v的最大值。 转移方程还是max(f[k-1][v],f[k-1][v-c[i]]w[i]) 伪代码(注意循环顺序): for 所有组: for vmax.....0…

wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

文章目录 前言一、使用gstreamer 获取 pattern 图片二、代码实例1. pattern 图片作为纹理数据源的代码实例1.1 基于opengles2.0 接口的 egl_wayland_texture2_1.c1.2 基于opengles3.0 接口的 egl_wayland_texture3_1.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3…

算法学习——LeetCode力扣二叉树篇8

算法学习——LeetCode力扣二叉树篇8 669. 修剪二叉搜索树 669. 修剪二叉搜索树 - 力扣(LeetCode) 描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high…

Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ

完全背包 题目 文章讲解 视频讲解 完全背包和0-1背包的区别在于:物品是否可以重复使用 思路:对于完全背包问题,内层循环的遍历方式应该是从weight[i]开始一直遍历到V,而不是从V到weight[i]。这样可以确保每种物品可以被选择多次…

解决Thymeleaf的地震震中距离展示[[]]双引号报错的问题

目录 前言 一、问题场景还原 1、需求场景 2、系统设计 3、功能实现 4、线数据标注展示 5、页面出错 二、解决Thymeleaf报错 1、错误说明 2、参数改造 3、问题修复 总结 前言 今天是2024年2月12日,农历正月初三,还是农历龙年春节。在这里首先…

ubuntu快速安装miniconda

ubuntu快速安装miniconda 环境 ubuntu.22.04 显卡 RTX 3050 关于选择Miniconda还是Anaconda的问题,Anaconda安装包比较大,耗时比较长,如果你是绝对的初学者,选择Anaconda会比较稳妥一些;否则建议你还是选择Miniconda安…

docker 1:介绍

docker 1:介绍 docker解决哪些问题: 传统APP在安装到不同电脑的时候可能会遇到依赖问题,比如缺少VS 20xx,软件无法运行”的情况。docker使用容器技术将软件 依赖​打包为image包发布,解决了依赖问题。docker有一个官…

考研高数(导数的定义)

总结: 导数的本质就是极限。 函数在某点可导就必连续,连续就有极限且等于该点的函数值。 例题1:(归结原则的条件是函数可导) 例题2: 例题3:

Unity下使用Sqlite

sqlite和access类似是文件形式的数据库,不需要安装任何服务,可以存储数据,使用起来还是挺方便的。 首先需要安装DLL 需要的DLL 我们找到下面两个文件放入Plugins目录 Mono.Data.Sqlite.dll System.Data.dll DLL文件位于Unity的安装目录下的…

controller-manager学习三部曲之三:deployment的controller启动分析

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《controller-manager学习三部曲》完整链接 通过脚本文件寻找程序入口源码学习deployment的controller启动分析 本篇概览 本文是《controller-manager学习三…

部署JForum2过程。

居然用了两天时间,才把JForum2部署成功。走了一些弯路,主要原因是想当然,以为jdk和tomcat,应该向下兼容,所以就随便选的版本。 一、jdk-17、apache-tomcat-10.1.18-windows-x64,部署完jforum-2.8.2.war,改…

基于STM32与FreeRTOS的四轴机械臂项目

目录 一、项目介绍 二、前期准备 1.硬件准备 2.开发环境 3.CubeMX配置 三、裸机各种模块测试 1.舵机模块 2.蓝牙模块 3.按键摇杆传感器模块和旋钮电位器模块 4.OLED模块 5.W25Q128模块 四、裸机三种控制测试 1.摇杆控制 2.示教器控制 3.蓝牙控制 五、裸机与Free…

linux应用 进程间通信之共享内存(POSIX)

1、前言 1.1 定义 POSIX共享内存是一种在UNIX和类UNIX系统上可用的进程间通信机制。它允许多个进程共享同一块内存区域,从而可以在这块共享内存上进行读写操作。 1.2 应用场景 POSIX共享内存适用于需要高效地进行大量数据交换的场景,比如多个进程需要…

Hive的Join连接

前言 Hive-3.1.2版本支持6种join语法。分别是:inner join(内连接)、left join(左连接)、right join(右连接)、full outer join(全外连接)、left semi join(左…

C++ bfs再探迷宫游戏(五十五)【第二篇】

今天我们用bfs解决迷宫游戏。 1.再探迷宫游戏 前面我们已经接触过了迷宫游戏,并且学会了如何使用 DFS 来解决迷宫最短路问题。用 DFS 求解迷宫最短路有一个很大的缺点,需要枚举所有可能的路径,读入的地图一旦很大,可能的搜索方案…

VM和Linux安装

VM和Linux安装 一、下载VM 1.官网地址:https://www.vmware.com/cn.html 2.其他地址:http://ww7.nocmd.com/windows/740.html 许可证这个,大家可以自己上网搜索,很容易就搜索到就可以使用了 上面内容就是安装VM的步骤 安…

BFS与DFS初级练习(排列数字,n-皇后,走迷宫)

BFS与DFS初步了解 DFS(深度优先搜索)和BFS(广度优先搜索)是两种常用的图遍历算法。 DFS是一种递归的搜索算法,它从起始节点开始,沿着路径依次访问与当前节点相邻的未访问节点,直到无法继续访问…

Pytorch的可视化

1 使用 wandb进行可视化训练过程 本文章将从wandb的安装、wandb的使用、demo的演示进行讲解。 1.1 如何安装wandb? wandb的安装比较简单,在终端中执行如下的命令即可: pip install wandb在安装完成之后,我们需要,去…

【力扣】5.最长回文子串

这道题我主要是通过动态规划来进行解题,看了我好久(解析),生疏了呀。 首先就是判断一个字符串是不是回文,我们可以设置两个指针,从前往后进行判断即可,运用暴力解题法,这里运用的动…