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

LeetCode链表OJ题目 代码+思路分享

目录

    • 删除有序数组中的重复项
    • 合并两个有序数组
    • 移除链表元素

删除有序数组中的重复项

链接: link
题目描述:
u
题目思路:

本题使用两个指针dst和src一前一后
在这里插入图片描述
相同情况:
如果nums[dst]=nums[src],那么src++
在这里插入图片描述
不相同情况:
此时nums[dst]=nums[src]:
1.我们先让src++
2.接着将nums[dst]=nums[src]
3.src++
在这里插入图片描述
按照此思路依次向后,我们最终会得到这样的一个结果
此时删除后数组的元素个数是dst+1在这里插入图片描述

代码实现:

int removeDuplicates(int* nums, int numsSize)
{int dst = 0;int src = 1;while(src<numsSize){if(nums[dst]==nums[src]){src++;}else{dst++;nums[dst]=nums[src];src++;}}return dst+1;
}

合并两个有序数组

链接: link
题目描述:
在这里插入图片描述
题目思路:

在这里插入图片描述

end1和end2指向的元素进行对比,将值最大的元素放在end指向的位置,如果end1的元素最大,则end1–,end–,如果end2的元素最大,则end2–,end–。
进行第一次对比,结果如下:
在这里插入图片描述
第二次
在这里插入图片描述
第三次
在这里插入图片描述
这里是第二个数组走到了最后,所以说数组就成功合并结束。
如果是第二个数组没有走到最后呢?
如果第二个数组剩余元素,那么直接将第二个数组的元素依次放在第一个数组相应的位置,完成合并。

代码实现:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{int end1 = m-1;int end2 = n-1;int end = m+n-1;while(end1>=0&&end2>=0){if(nums2[end2]>nums1[end1]){nums1[end--]=nums2[end2--];}else{nums1[end--]=nums1[end1--];}}while(end2>=0){nums1[end--]=nums2[end2--];}}

移除链表元素

链接: link
题目描述:
在这里插入图片描述
题目思路:

首先我们对这道题的思考是前后两个节点指针,进行删除节点的操作
我们这里设定cur指向的节点是要被删除的节点在这里插入图片描述
1、如果cur->val不是我们所想要删除的节点值,那么就做下面操作:
prev=cur ,cur=cur->next,继续向下遍历链表,寻找我们要删除的那个节点。
在这里插入图片描述
2、如果此时cur->val是我们想要删除的值,我们就要判断prev空指针的问题了,为什么呢?这里解释一下
如果说链表开始头节点就是6,那么头节点就是我们要删除的节点,这里prev就是空指针,就是下面的情况:
在这里插入图片描述
这里我们要做的操作是:cur=head->next,free(head),head = cur删除头节点元素后,将cur赋值成新的头。
3、如果此时cur->val是我们想要删除的值,并且是下面的情况,那么这种就不是空指针问题:
在这里插入图片描述
这里我们需要做的操作就是:prev->next = cur->next,free(cur),cur=prev->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!=NULL){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;
}

相关文章:

LeetCode链表OJ题目 代码+思路分享

目录 删除有序数组中的重复项合并两个有序数组移除链表元素 删除有序数组中的重复项 链接: link 题目描述&#xff1a; 题目思路&#xff1a; 本题使用两个指针dst和src一前一后 相同情况&#xff1a; 如果nums[dst]nums[src]&#xff0c;那么src 不相同情况&#xff1a; 此…...

第06讲:为何各大开源框架专宠 SPI 技术?

在此前的内容中&#xff0c;已经详细介绍了 SkyWalking Agent 用到的多种基础技术&#xff0c;例如&#xff0c;Byte Buddy、Java Agent 以及 OpenTracing 中的核心概念。本课时将深入介绍 SkyWalking Agent 以及 OAP 中都会使用到的 SPI 技术。 JDK SPI 机制 SPI&#xff08…...

[Unity] No.1 Single单例模式

单例模式 1. 基础 定义&#xff1a;单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时&#xff0c;为了防止频繁地创建对象使得内存飙升&#xff0c;单例模式可以让程序仅在内存中创建一个对象&#xff0c;让所有需要调用的地…...

【chatGPT知识分享】Flutter web 性能优化基础入门

简介 Flutter 是 Google 在这里插入代码片公司推出的跨平台移动应用开发框架&#xff0c;支持 Android、iOS 和 Web 等多个平台。Flutter Web 是 Flutter 在 Web 平台上的应用&#xff0c;可以开发具有良好用户体验的网站。但是&#xff0c;由于 Web 环境的特殊性&#xff0c;…...

探索Qt折线图之美:一次详尽的多角度解析

探索Qt折线图之美&#xff1a;一次详尽的多角度解析 第一章&#xff1a;Qt折线图的基本概念与应用场景&#xff08;Basic Concepts and Applications of Qt Line Charts&#xff09;1.1 Qt折线图简介&#xff08;Introduction to Qt Line Charts&#xff09;1.2 Qt折线图的应用…...

minio集群部署,4台服务器+1台nginx

4台主机1台nginx负载均衡 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥&#xff0c;即&#xff1a;用户名和密码 分布式Minio存放数据的磁盘目录必须是空目录 分布式Minio官方建议生产环境最少4个节点&#xff0c;因为有N个节点&#xff0c;得至少保证有N/2的节…...

实例分割算法BlendMask

实例分割算法BlendMask 论文地址&#xff1a;https://arxiv.org/abs/2001.00309 github代码&#xff1a;https://github.com/aim-uofa/AdelaiDet 我的个人空间&#xff1a;我的个人空间 密集实例分割 ​ 密集实例分割主要分为自上而下top-down与自下而上bottom-up两类方法…...

多线程、智能指针以及工厂模式

目录 一、unique_lock 二、智能指针 &#xff08;其实是一个类&#xff09; 三、工厂模式 一、unique_lock 参考文章【1】&#xff0c;了解unique_lock与lock_guard的区别。 总结:unique_lock使用起来要比lock_guard更灵活&#xff0c;但是效率会第一点&#xff0c;内存的…...

初探 VS Code + Webview

本文作者为 360 奇舞团前端开发工程师 介绍 VSCode 是一个非常强大的代码编辑器&#xff0c;而它的插件也非常丰富。在开发中&#xff0c;我们经常需要自己编写一些插件来提高开发效率。本文将介绍如何开发一个 VSCode 插件&#xff0c;并在其中使用 Webview 技术。首先介绍一下…...

Codeforces Round 864 (Div. 2)(A~D)

A. Li Hua and Maze 给出两个不相邻的点&#xff0c;最少需要堵上几个方格&#xff0c;才能使得两个方格之间不能互相到达。 思路&#xff1a;显然&#xff0c;对于不邻任何边界的方格来说&#xff0c;最少需要的是4&#xff0c;即上下左右都堵上&#xff1b;邻一个边界就-1&a…...

第3章-运行时数据区

此章把运行时数据区里比较少的地方讲一下。虚拟机栈&#xff0c;堆&#xff0c;方法区这些地方后续再讲。 转载https://gitee.com/youthlql/JavaYouth/tree/main/docs/JVM。 运行时数据区概述及线程 前言 本节主要讲的是运行时数据区&#xff0c;也就是下图这部分&#xff0c…...

delta.io 参数 spark.databricks.delta.replaceWhere.constraintCheck.enabled

总结 默认值true 你写入的df分区字段必须全部符合覆盖条件 .option("replaceWhere", "c2 == 2") false: df1 overwrite tb1: df1中每个分区的处理逻辑: - tb1中存在(且谓词中匹配)的分区,则覆盖 - tb1中存在(谓词中不匹配)的分区,则append - tb1中不存…...

Redis知识点

1. Redis-常用数据结构 Redis提供了一些数据结构供我们往Redis中存取数据&#xff0c;最常用的的有5种&#xff0c;字符串&#xff08;String&#xff09;、哈希(Hash)、列表&#xff08;list&#xff09;、集合&#xff08;set&#xff09;、有序集合&#xff08;zset&#xf…...

经典数据结构之2-3树

2-3树定义 2-3树&#xff0c;是最简单的B-树&#xff0c;其中2、3主要体现在每个非叶子节点都有2个或3个子节点&#xff0c;B-树即是平衡树&#xff0c;平衡树是为了解决不平衡树查询效率问题&#xff0c;常见的二叉平衡书有AVL树&#xff0c;它虽然提高了查询效率&#xff0c…...

Numpy从入门到精通——节省内存|通用函数

这个专栏名为《Numpy从入门到精通》&#xff0c;顾名思义&#xff0c;是记录自己学习numpy的学习过程&#xff0c;也方便自己之后复盘&#xff01;为深度学习的进一步学习奠定基础&#xff01;希望能给大家带来帮助&#xff0c;爱睡觉的咋祝您生活愉快&#xff01; 这一篇介绍《…...

Docker-compose 启动 lnmp 开发环境

GitHub传送阵 docker-lnmp 项目帮助开发者快速构建本地开发环境&#xff0c;包括Nginx、PHP、MySQL、Redis 服务镜像&#xff0c;支持配置文件和日志文件映射&#xff0c;不限操作系统&#xff1b;此项目适合个人开发者本机部署&#xff0c;可以快速切换服务版本满足学习服务新…...

《android源码阅读四》Android系统源码整编、单编并运行到虚拟机

1、编译环境 《安装Ubuntu系统》《android源码下载》 2、整编源码 进入Android源码根目录 cd AOSP初始化环境 source build/envsetup.sh清除缓存 make clobber选择编译目标 // 选择编译目标 lunch // 因为本次是在虚拟机中运行&#xff0c;这里使用x86 lunch aosp_x86_6…...

深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练。在模型训练中,大家往往对各种的数据类型比较难下手,对于非结构化数据已经复杂的数据的要进行特殊处理,这里介绍一下我们如何进行数据处理才能输入到模型中,进…...

【笔试】备战秋招,每日一题|20230415携程研发岗笔试

前言 最近碰到一个专门制作大厂真题模拟题的网站 codefun2000&#xff0c;最近一直在上面刷题。今天来进行2023.04.15携程研发岗笔试&#xff0c;整理了一下自己的思路和代码。 比赛地址 A. 找到you 题意&#xff1a; 给定一个仅包含小写字母的 n n n\times n nn 的矩阵…...

【unity专题篇】—GUI(IMGUI)思维导图详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

轻量级Docker管理工具Docker Switchboard

简介 什么是 Docker Switchboard &#xff1f; Docker Switchboard 是一个轻量级的 Web 应用程序&#xff0c;用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器&#xff0c;使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...