【Leetcode -21.合并两个有序链表 -83.删除排序链表中的重复元素】

news2024/9/28 15:31:26

Leetcode

  • Leetcode-21.合并两个有序链表
  • Leetcode-83.删除排序链表中的重复元素

Leetcode-21.合并两个有序链表

题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:
输入:l1 = [1, 2, 4], l2 = [1, 3, 4]
输出:[1, 1, 2, 3, 4, 4]

示例 2:
输入:l1 = [], l2 = []
输出:[]

示例 3:
输入:l1 = [], l2 = [0]
输出:[0]

我们的思路是,先定义两个结构体的空指针head和tail,然后先第一次比较list1和list2,谁小就把它的头节点赋给head和tail,然后更新list1或者list2;如图:

在这里插入图片描述
然后进入循环进行比较,当list1和list2都为非空,就进入循环,比较list1和list2谁小,假如list1小就把它放到tail的next,然后更新tail,更新list1;list2也同理;直到其中有一个空,就把另外一个非空的直接链接上tail的next;如图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

		struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
		{
		    //list1和list2其中一个链表为空,返回另外一个
		    if (list1 == NULL)
		    {
		        return list2;
		    }
		
		    else if (list2 == NULL)
		    {
		        return list1;
		    }
		
		    //定义两个结构体的指针
		    struct ListNode* head = NULL;
		    struct ListNode* tail = NULL;
		
		    //首先第一次比较,比较list1和list2谁小,就把这个头节点赋给head和tail
		    if (list1->val < list2->val)
		    {
		        head = tail = list1;
		        list1 = list1->next;
		    }
		
		    else
		    {
		        head = tail = list2;
		        list2 = list2->next;
		    }
		
		    //当list1和list2都不为空,循环继续
		    while (list1 && list2)
		    {
		        //开始逐一比较,假如list1小就把它放到tail的next,然后更新tail,更新list1
		        if (list1->val < list2->val)
		        {
		            tail->next = list1;
		            tail = tail->next;
		            list1 = list1->next;
		        }
		
		        //list2小或者等于就把它放到tail的next,然后更新tail,更新list2
		        else
		        {
		            tail->next = list2;
		            tail = tail->next;
		            list2 = list2->next;
		        }
		    }
		
		    //直到其中有一个空,就把另外一个非空的直接链接上tail的next
		    if (list1 == NULL)
		    {
		        tail->next = list2;
		    }
		    else
		    {
		        tail->next = list1;
		    }
		
		    return head;
		}

Leetcode-83.删除排序链表中的重复元素

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

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

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

我们的思路是,定义两个指针,寻找重复的元素,当两个指针指向的元素相等,就将第一个先出现的指向第二次出现的next,如下图:

在这里插入图片描述

		struct ListNode* deleteDuplicates(struct ListNode* head)
		{
		    //head为空指针,返回空指针
		    if (head == NULL)
		    {
		        return NULL;
		    }
		
		    //定义cur和del指针,cur从头开始,del从cur的next开始
		    struct ListNode* cur = head, * del = head->next;
		
		    //当del不为空
		    while (del)
		    {
		        //当cur的val等于del的val,即出现了重复元素
		        if (cur->val == del->val)
		        {
		            //将del的next赋给cur的next,即cur指向了del的next
		            cur->next = del->next;
		
		            //更新del
		            del = del->next;
		        }
		
		        //当cur的val不等于del的val,即不是重复元素
		        else
		        {
		            //更新cur和del
		            cur = cur->next;
		            del = del->next;
		        }
		    }
		    return head;
		}

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

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

相关文章

CUDA编程一天入门

目录 0 环境准备 1 套路 2 并行执行内核设置 3 示例代码simpleTexture3D 4 参考链接 0 环境准备 1 套路 CUDA 编程模型是一个异构模型&#xff0c;其中同时使用 CPU 和 GPU。在 CUDA 中&#xff0c;主机是指 CPU 及其内存&#xff0c;而设备是指 GPU 及其内存。在主机…

Prophet学习(三)饱和的预测与饱和最低

目录 饱和的预测&#xff08;Forecasting Growth&#xff09; 饱和最低&#xff08;Saturating Minimum&#xff09; 饱和的预测&#xff08;Forecasting Growth&#xff09; 默认情况下&#xff0c;Prophet使用线性模型进行预测。在预测增长时&#xff0c;通常有一个最大可达…

Ubuntu22.04lts NVIDIA驱动安装

1. NVIDIA驱动安装 1.1 手动安装 驱动下载地址&#xff1a;NVIDIA Driver Downloads 注意要在文本模式安装&#xff0c;进入文本模式的方法&#xff1a;sudo init 3。 返回图形化界面的方法sudo init 5 安装时报错&#xff1a; 安装NVIDIA驱动&#xff08;手动安装NVIDIA-L…

两种方式,轻松实现ChatGPT联网

两种方式效果&#xff1a; 方式一&#xff1a;浏览器搜索内嵌插件 方式二&#xff1a;官方聊天页内嵌插件 首先&#xff0c;要有一个谷歌浏览器&#xff0c;然后再安装一个叫ChatGPT for Google&#xff0c;直接在谷歌里搜一下就能找&#xff0c;也可以Chrome应用商店里搜索&a…

SAP批次主数据增强屏幕增强<转载>

原文链接&#xff1a;https://blog.csdn.net/hustliangchen/article/details/111163361 msc1n/msc2n/msc3n 批次增强 这几个事务码的主程序为SAPLCHRG&#xff0c;在如下图界面上有两块地方是可以做增强所预留的子屏幕&#xff0c;其中2是一个tab页签的子屏幕。注意版本较老的…

AI企划-《大明镇抚司到此一游》商业计划书

结合中国文化和当地资源打造的独特旅游产品 一、项目概述 本项目旨在利用中国文化特色&#xff0c;结合新西兰当地资源和市场需求&#xff0c;打造一款独特的旅游产品——“大明镇抚司到此一游”网红打卡点。该打卡点以大明镇抚司为主题&#xff0c;以大明小龙虾美食为特色&am…

千亿市场!低代码平台极大提升企业应用开发效率,颠覆传统模式!

背景 低代码平台的5个核心亮点&#xff1a; 可视化的表单设计&#xff1b; 2.可视化的审批流&#xff0c;逻辑流设计&#xff1b; 3.可视化的BI图标设计&#xff1b; 4.可视化的以应用为中心的开放和集成接口设计&#xff1b; 5.以应用为中心&#xff0c;依托于云原生技术的快…

线性表,栈和队列

什么是线性表&#xff1f; 线性表是由n个相同类型的数据元素组成的有限序列&#xff0c;它是最基本的一种线性结构。顾名思义&#xff0c;线性表就像是一条线&#xff0c;不会分叉。线性表有唯一的开始和结束&#xff0c;除了第一个元素外&#xff0c;每个元素都有唯一的直接前…

docker容器:docker资源管理

目录 一、docker资源控制 1、资源控制工具 2、设置CPU使用率上限 3、CPU压力测试 4、Cgroups限制cpu使用率 5、查看容器运行状态 6、 配置容器指定CPU 7、限制容器内存使用 8、对磁盘IO配额控制&#xff08;blkio&#xff09;的限制 二、docker数据管理 1、数据管理…

量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

文章目录 前言一、三次多项式的例题二、Python实现1.引入库 总结 前言 本文还是大部分截图来自于&#xff1a;《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833 终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以…

购物车--购物车模块完善

很明显&#xff0c;之前的购物车模块功能的实现不够完善&#xff0c;缺少一个删除购物车中产品的操作&#xff0c;针对此我们加一个删除功能。 1、写负责删除的servelt类 2、然后我们给购物车页面的jsp添加超链接传递目标id 搞定。

王道计组(23版)1_计算机系统概述

1.计算机发展历程 硬件的发展&#xff1a; 电子管、晶体管、中小规模集成电路、超大规模集成电路 摩尔定律&#xff1a; 价格不变时&#xff0c;每18个月&#xff0c;集成电路可容纳的晶体管数量和性能增加一倍 微型计算机的发展以微处理器技术为标志 计算机体系结构&#xf…

u盘里的文件被自动删除了怎么办?五种数据恢复方案

u盘是我们日常生活中常常用到的一种便携式存储设备&#xff0c;可以帮助我们存储和携带大量的文件信息。但是&#xff0c;使用过程中难免会遇到一些问题&#xff0c;例如u盘会自己删除文件的情况&#xff0c;如果你遇到了这种情况&#xff0c;该怎样找回u盘自己删除的文件呢&am…

程序猿眼中的协议:TCP / IP 五层网络模型

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a; 保护小周ღ&#xff0c;本期为大家带来的是 网络基础原理中的 TCP / IP 五层网络模型&#xff0c;主要从协议的概念&#xff0c;网络模型&#xff0c;数据分层传输的流程&#xff0c;几个方面讲解&#xff0c;看完之后可以…

jdk-FuteureForkJoin框架源码学习

背景 日常的计算任务大部分都是串行来执行&#xff0c;但是如果一个复杂的任务需要进行拆分为多个小任务&#xff0c;那么以往是自行写一个递归或者循环计算等算法来实现&#xff0c;随着这类需求的提升&#xff0c;java7中引入了ForkJoin框架来支持这类计算&#xff0c;可以比…

计算机组成原理——第六章总线

误逐世间乐&#xff0c;颇穷理乱情 文章目录 前言6.1.1 总线概述6.1.2 总线的性能指标6.2 总线仲裁(408不考)6.3 总线操作和定时 前言 本章在概述部分我们会首先介绍一下总线的基本概念&#xff0c;介绍一下总线的分类以及经典结构&#xff0c;介绍一些性能指标来评价总线的性…

部分面试题记录

Spring相关&#xff1a; 1. spring框架中的单例bean是线程安全的嘛&#xff1f; 1.1 bean单例多例配置&#xff1a; bean可以手动设置单例或者多例&#xff1a; Service Scope("singleton") public class UserServicelmpl implements UserService { }singleton:b…

QT学习笔记4

一.UI的使用 ui代码输入&#xff1a; ui->setupUi(this);ui->statusbar->showMessage("作者",3000); 在ui类中调用 二.对话框QDialong 模态对话框&#xff1a;就是会阻塞同一应用程序中其它窗口的输入 非模态对话框&#xff1a;不会堵塞同一应用程序中其…

Python反序列化漏洞及魔术方法详细全解(链构造、自动审计工具bandit)

目录 一、Python序列化反序列化相关函数 二、Python魔术方法 三、魔术方法实例详解 <__reduce__> <__setstate__> <__getstate__> 四、反序列化安全漏洞的产生 五、真题实例 六、CTF-CISCN华北-JWT&反序列化 七、代码审计自动化工具——bandit …

理解unsafe-assume-no-moving-gc包

1. 背景 在之前的《Go与神经网络&#xff1a;张量计算》[1]一文中&#xff0c;不知道大家是否发现了&#xff0c;所有例子代码执行时&#xff0c;前面都加了一个环境变量ASSUME_NO_MOVING_GC_UNSAFE_RISK_IT_WITH&#xff0c;就像下面这样&#xff1a; $ASSUME_NO_MOVING_GC_UN…