当前位置: 首页 > news >正文

leetcode203.移除链表元素

目录

  • 问题描述
  • 示例
    • 提示
  • 具体思路
    • 思路一
    • 思路二
  • 代码实现

问题描述

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

题目链接:移除链表元素

示例

在这里插入图片描述

在这里插入图片描述

提示

  列表中的节点数目在范围 [0, 1 0 4 10^4 104] 内
  1 <= Node.val <= 50
  0 <= val <= 50

具体思路

思路一

  通过查找链表中节点的值不等于val,就在新的链表上进行尾插,不过这种方式实现的时间复杂度也比较高

思路二

  通过遍历链表,查找链表中的值等于val就进行删除,将前一个节点(pre)的next指针指向它后一个节点,然后free掉当前节点(cur),然后再将当前节点的指针(cur)指向下一个节点
在这里插入图片描述

代码实现

//思路2
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* removeElements(struct ListNode* head, int val) {
    struct ListNode* prev =NULL;
    struct ListNode* cur = head;
    while(cur)
    {
        if(cur->val==val)
        {
            if(prev)
            {
                prev->next=cur->next;
                free(cur);
                cur =prev->next;
            }
            else
            {
                cur=head->next;
                free(head);
                head=cur;
            }
        }
        else
        {
            prev=cur;
            cur=cur->next;
        }
    }
    return head;
}

相关文章:

  • 幂等与分布式锁的区别及应用场景
  • 前端自动化部署的极简方案
  • windows下docker使用笔记
  • 项目中一些不理解的问题
  • 解决Python升级导致PySpark任务异常方案
  • idea 无法下载源码
  • R-CNN
  • Java 中有哪些常见的语法糖?
  • 如何安装Hadoop
  • 旧手机热点无法提供ipv6解决方法(emui 8 热点提供ipv6)
  • 跳表(Skip List)详解
  • 【Cesium学习(十二)】Cesium常见问题整理总结
  • CSS基本选择器
  • 关于 形状信息提取的说明
  • Redis 的常见应用场景
  • IOS UITextField 无法隐藏键盘问题
  • LSTM 与随机森林的对比
  • stream流常用方法
  • uniapp 滚动尺
  • 【湖南-益阳】《益阳市市本级政府投资信息化项目预算编制与财政评审工作指南》益财评〔2024〕346号-省市费用标准解读系列40
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 北外滩集团21.6亿元摘上海虹口地块,为《酱园弄》取景地
  • 长江画派创始人之一、美术家鲁慕迅逝世,享年98岁
  • 英国和美国就关税贸易协议条款达成一致
  • 越秀地产前4个月销售额约411.2亿元,达年度销售目标的34.1%
  • 媒体起底“速成洋文凭”灰产链,专家:我们要给学历“祛魅”