C\C++刷题ADY3

news2024/11/17 13:45:19

题目来源:力扣

1.第一题

203. 移除链表元素 - 力扣(LeetCode)

思路分析:(不带哨兵位的头节点)

每次去分析一个节点,

如果节点不是存的是6,就拿节点来尾插

如果节点存的不是6,就把节点free掉

 思路分析:(带哨兵位的头节点)

带哨兵位的头节点的优势之一就是方便尾插

也就是说不需要判断开始尾插的时候是不是为NULL

不带哨兵位头节点需要判断第一插入的时候的节点是不是NULL,以此区分后续的尾插

PS:带哨兵位的思路请读者自己完成,尾插的思路并没有改变,变的仅仅是多了一个哨兵头节点,方便尾插

带哨兵位的头节点仅仅只是方便尾插,其余的操作还是不带哨兵位的头节点的单链表更舒服,实际和OJ题目中几乎不用带哨兵位的头节点(除非明确说明)

参考代码(不带哨兵位的头节点):

struct ListNode* removeElements(struct ListNode* head, int val)
{
    struct ListNode* cur = head;
	struct ListNode* newhead;
    struct ListNode* tail;
	newhead = tail = NULL;

	while (cur)
	{
		if (cur->val != val)
		{
			if (tail == NULL)
			{
				newhead = tail = cur;
			}
			else
			{
				tail->next = cur;
				tail = tail->next;
			}

			cur = cur->next;
		}
		else
		{
			struct ListNode* next = cur->next;
			free(cur);
			cur = next;
		}
	}
    if(tail)
    {
        tail->next = NULL;
    }
	return newhead;
}

2.第二题

21. 合并两个有序链表 - 力扣(LeetCode)

 

 思路分析:

给一个head指针

给一个tail指针

取较小的尾插

参考代码1(不带哨兵位的头节点):

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
   if(list1==NULL)
        return list2;
   if(list2==NULL)
        return list1;

    struct ListNode* head;
    struct ListNode* tail;
    head=tail=NULL;

    //取小的尾插
    while(list1 && list2)
    {
        if(list1->val < list2->val)
        {
            if(tail == NULL)
            {
                head = tail = list1;
            }
        
            else
            {
            tail->next = list1;
            tail = tail->next;
            }
            list1 = list1->next;
        }
        else
        {
            if(tail == NULL)
            {
                head = tail = list2;
            }
        
            else
            {
            tail->next = list2;
            tail = tail->next;
            }
            list2 = list2->next;
        }
      
    }
      if(list1)
        tail->next = list1;
        if(list2)
        tail->next = list2;

        return head;

}

参考代码2(带哨兵位的头节点):

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
        struct ListNode*guard,*tail;
        guard = tail = (struct ListNode*)malloc(sizeof(struct ListNode));
        guard->next = NULL;

        //取小的尾插
        while(list1 && list2)
        {
            if(list1->val<list2->val)
            {
                tail->next = list1;
                tail = tail->next;
                list1 = list1->next;
            }
            else
            {
                tail->next = list2;
                tail = tail->next;
                list2 = list2->next;
            }
        }
        if(list1)
        {
            tail->next= list1;
        }
        if(list2)
        {
            tail->next=list2;
        }

    struct Node* head =guard->next;
    free(guard);
    return head;

}

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

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

相关文章

计算机毕业设计ssm+vue基本微信小程序的“香草屋”饮料奶茶点单小程序

项目介绍 随着社会的发展,互联网的迅速发展,5G时代的到来,智能手机的普及,人们的生活方式更加智能一体化,衣食住行也越来越简单快捷,人们的生活也更加趋向于智能化,一台智能手机可以解决生活中的各种难题。为了使人们的生活更加方便,于是各种生活小程序普遍产生, 随着微信小程序…

记一次 .NET 某自动化采集软件 崩溃分析

一&#xff1a;背景 1.讲故事 前段时间有位朋友找到我&#xff0c;说他的程序在客户的机器上跑着跑着会出现偶发卡死&#xff0c;然后就崩掉了&#xff0c;但在本地怎么也没复现&#xff0c;dump也抓到了&#xff0c;让我帮忙看下到底怎么回事&#xff0c;其实崩溃类的dump也…

java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计

java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm班级同学录网站》 该项目分为2个角色&#xff0c;管理员、用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、公告信息、校友风采、论坛信息&#xff0c;用…

vue项目中使用 NProgress 进度加载插件

场景&#xff1a;每次进入页面时&#xff0c;页面顶部都有一个加载条 下来说下这个效果怎么实现的 第一步&#xff1a;下载 NProgress 插件 npm install --save nprogress 第二步&#xff1a;导入 nprogress 并配置 切记&#xff1a;NP 都必须是大写 我是在路由页面中导入的 im…

搜索引擎项目开发过程以及重难点整理

目录认识搜索引擎搜索的核心思路倒排索引介绍项目简介模块管理构建索引模块数据库设计正排索引倒排索引程序入口类Indexer类扫描文档子模块FileScanner类构建文档子模块构建标题parseTitle方法构建urlparseUrl方法构建内容parseContent方法构建正排索引子模块正排索引实体类map…

Nginz静态资源缓存

缓存 缓存&#xff08;cache&#xff09;&#xff0c;原始意义是指访问速度比一般随机存取存储器&#xff08;RAM&#xff09;快的一种高速存储器&#xff0c;通常它不像系统主存那样使用DRAM技术&#xff0c;而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发…

【前端-TypeScript】TypeScript学习思维导图-一图看完《TypeScript编程》

目录前言文章已收录至https://lichong.work&#xff0c;转载请注明原文链接。 ps&#xff1a;欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验&#x1f91d; 前言 现在&#xff0c;TypeScript 正在逐渐成为与前端框架以及 ES6 语法同一地位的基础工具&#xff0c;更多…

计算机毕业设计node+vue基于微信小程序的西餐外卖系统 uniapp 小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,西餐外卖系统就是信息时代变革中的产物之一。 任何系统都要遵循系统…

力扣每日一题:808. 分汤 【dp动态规划】

有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作&#xff1a; 提供 100ml 的 汤A 和 0ml 的 汤B 。提供 75ml 的 汤A 和 25ml 的 汤B 。提供 50ml 的 汤A 和 50ml 的 汤B 。提供 25ml 的 汤A 和 75ml 的 汤B 。 当我们把汤分配给某人之后&#xff0c;汤…

CentOS8 安装 erlang 和 RabbitMQ

哈喽大家好&#xff0c;我是阿Q&#xff01; 最近正好用到了消息队列中的 RabbitMQ ,今天就先来个前味菜&#xff0c;总结一下它在 centos 内的安装。 环境&#xff1a;CentOS 8.0 64位 安装erlang 由于 rabbitmq 是基于 erlang 语言开发的&#xff0c;所以必须先安装 erlang…

大数据项目之电商数仓、日志采集Flume、source、channel、 sink、Kafka的三个架构

文章目录4. 用户行为数据采集模块4.3 日志采集Flume4.3.1 Kafka的三个架构4.3.1.1 source4.3.1.2 channel4.3.1.3 sink4.3.1.4 kafka source4.3.1.5 kafka sink4.3.1.6 kafka channel4.3.1.6.1 第一个结构4.3.1.6.2 第二个结构4.3.1.6.3 第三个结构4. 用户行为数据采集模块 4.…

CentOS7 离线部署 Python 项目

1.前言 主要过程如下&#xff1a; &#xff08;1&#xff09;创建项目环境&#xff0c;生成requirements.txt文件。&#xff08;如果已有可跳出&#xff09; &#xff08;2&#xff09;新建一个跟目标机器一样的操作系统&#xff0c;python环境的测试服务器&#xff0c;并下载…

【考研英语语法】名词性从句

0 导言 名词性从句&#xff0c;是指一个句子相当于名词来使用&#xff0c;放到另外一个句子中。通常情况下&#xff0c;名词在句子中主要作四种成分&#xff1a;宾语、表语、主语、同位语。因此&#xff0c;名词性从句就分成四种&#xff1a;宾语从句、表语从句、主语从句、同…

迅为iTOP3568开发板Android11获取root权限关闭selinux

本文档所需资料在网盘资料“iTOP-3568 开发板\02_【iTOP-RK3568 开发板】开发资料\ 06_Android 系统开发配套资料\02_Android11 获取 root 权限配套资料”目录下。本文档参考瑞 芯微官方文档&#xff0c;在源码“Android11/rk_android11.0_sdk/RKDocs/android/patches/root”目…

SpringBoot整合Swagger2

整合Swagger2 1.Swagger介绍 前后端分离开发模式中&#xff0c;api文档是最好的沟通方式。 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 1、及时性 (接口变更后&#xff0c;能够及时准确地通知相关前后端开发人员)…

Kubernetes云原生实战00 何为云原生?

大家好&#xff0c;我是飘渺。 从今天开始我将开启第二个专栏系列&#xff0c;即 Kubernetes云原生实战 何为云原生 都2022年了&#xff0c;我相信各位肯定听过 云原生 这个词&#xff0c;但是究竟什么是云原生&#xff0c;却很少有人能真正说清楚。 如果找资料来看&#x…

广通远驰亮相2022 C-V2X“四跨”(苏州)应用示范活动

2022年11月3-4日&#xff0c;2022 C-V2X“四跨”&#xff08;苏州&#xff09;先导应用示范活动在苏州举办&#xff0c;9家国内外整车企业、22家终端企业、9家芯片模组企业、7家信息安全企业共计23个车队、47家单位参与活动演示。 深圳市广通远驰科技有限公司&#xff08;以下简…

请求转发与重定向到底有哪些区别?

一. 前言 我们知道&#xff0c;Web开发中的页面跳转&#xff0c;通常有两种跳转方式&#xff1a;重定向与请求转发。但可能有很多同学并不知道这两种跳转在细节上的区别&#xff0c;只知道都能跳转到目标页面。但实际上这两种跳转方式深入研究后&#xff0c;你会发现有很多不同…

SAML2.0 笔记(二)

文章目录一、前言二、共通内容1.1、引入依赖1.2、初始化SAML部分1.2.1、检查JCE环境1.2.2、初始化服务1.3、拦截器部分1.3.1、构建AuthnRequest1.3.2、AuthRequest解析1.3.3、SP模式选择1.3.4、IDP模式选择1.4、涉及的工具类1.4.1、OpenSAMLUtils工具类1.4.2、sp/idp Credentia…

Life-long Mapping

0.引言 主要参考自某某学院的激光slam课程。 1.Lifelong Mapping 的概念和应用 在长时间的建图过程中&#xff0c;基于图优化的 SLAM 的方法存在以下问题&#xff1a;PoseGraph 中的节点随着机器人走过的距离越来越多&#xff0c;以至于求解规模不断增大&#xff0c;影响优化…