顺序表算法题【不一样的解法!】
本章概述
- 算法题1
- 算法题2
- 算法题3
- 彩蛋时刻!!!
算法题1
力扣:移除元素
我们先来看这个题目的要求描述:
把与val相同数值的元素移除掉,忽略元素的相对位置变化,然后返回剩下与val值不同的元素个数。来看下它给的例子描述:
- 题解:我们可以运用顺序表删除指定数据的思路来进行解题,我们可以定义双变量,用这两个变量去遍历数组元素,然后通过移动数组元素来移除指定元素。逻辑图展示:
- 进行代码展示:
int removeElement(int* nums, int numsSize, int val) {int src = 0;int dst = 0;while (src < numsSize) {if (nums[src] == val)src++;else {nums[dst] = nums[src];src++;dst++;}}return dst;
}
结果运行图:
算法题2
力扣:删除有序数组中的重复项
我们来看下这个题目的描述:
这个数组不是严格意义上的递增数组,要求把重复的元素给删掉,而且各个元素的相对位置不变化,最后返回不重复的元素个数。来看一下它给的例子:
- 题解:大体的思路和上一个算法题类似,也是需要两个变量进行遍历数组。在这里直接给大家展示代码:
int removeDuplicates(int* nums, int numsSize) {int src = 0;int dst = 0;while (src < numsSize) {if (nums[dst] == nums[src])src++;else {dst++;nums[dst] = nums[src];src++;}}return dst + 1;
}
结果运行图:
算法题3
力扣:合并两个有序数组
我们来看一下题目的描述:
-
题解:
nums1
数组的有效数据个数为m个,nums2
数组的有效数据个数为n个。我们要把ums2
的元素插入nums1
数组里面,那么nums1
的数组大小要为m+n
,才能保证能插入进去(题目描述的nums2大小为m+n),而且插进去后,还要是增序的顺序。来看题目举得例子:- 方法1:我们先把nums2插入nums1里面,然后用冒泡排序进行nums1内部排序。
- 方法2:我们直接进行两个数组里面的元素大小比较,把大的元素放在nums1最后面,我们需要定义3个变量,l1 ,l2 和 l3。l1和l2进行比较大小,l3是用来存放较大的元素。进行逻辑图展示:
进行代码展示:
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int l1=m-1;int l2=n-1;int l3=m+n-1;while(l1>=0&&l2>=0){if(nums1[l1]>nums2[l2]){nums1[l3--]=nums1[l1--];}else{nums1[l3--]=nums2[l2--];}}while(l2>=0) //防止l1<0时,l2里面得元素还没,还没全放进nums1{nums1[l3--]=nums2[l2--];}
}
结果运行图:
彩蛋时刻!!!
歌曲:《Call of Silence》
每章一句:人生漫长,祝你每天都快快乐乐!
感谢你能看到这里,点赞+关注+收藏+转发是对我最大的鼓励,咱们下期见!!!
相关文章:

顺序表算法题【不一样的解法!】
本章概述 算法题1算法题2算法题3彩蛋时刻!!! 算法题1 力扣:移除元素 我们先来看这个题目的要求描述: 把与val相同数值的元素移除掉,忽略元素的相对位置变化,然后返回剩下与val值不同的元素个数…...
VuePress的基本常识
今天大概了解了一下Vuepress,感觉很棒,看着极其简单,自己也想做一个,后续我大概率也会做一个用Vuepress为基础做的博客网站,很酷~ 哈哈哈,下面是我今天学习Vuepress的一些内容,简单分享下&#…...
深入解析Vue2与Vue3的区别与Vue3的提升
Vue.js作为一款流行的前端框架,自发布以来,凭借其简洁的语法、灵活的组件化和高效的性能,赢得了众多开发者的喜爱。随着Vue3的发布,许多新特性和新功能也应运而生。那么,Vue2与Vue3究竟有哪些区别呢?Vue3又…...
认识python数据分析
Python作为一种高效、灵活且易于学习的编程语言,在数据分析领域展现出了强大的应用潜力。 从数据清洗、预处理到复杂的统计分析、可视化及机器学习模型的构建,Python提供了丰富的库和框架,极大地简化了数据分析的流程,提高了工作…...

以太网交换安全:MAC地址漂移与检测(实验:二层环路+网络攻击)
一、什么是MAC地址漂移? MAC地址漂移是指网络中设备的MAC地址在运行过程中发生变化的现象。 MAC地址是用于唯一标识网络中的设备。 MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。…...

NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关
NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关 粒子采集部分 粒子采集的部分我们可以理解为,在已知粒子的情况下,对图片进行渲染的一个正向的过程。 空间坐标(x,y,z)发射的光线通过相机模型成为图片上…...

软件测试工程师:如何写出好的测试用例?
软件测试用例(Test Case)是软件测试过程中的一种详细文档或描述,用于描述在特定条件下,对软件系统或组件进行测试的步骤、输入数据、预期输出和预期行为。编写高质量的测试用例是确保软件质量的关键步骤之一。以下是一些编写优秀测试用例的建议ÿ…...

「图::连通」详解并查集并实现对应的功能 / 手撕数据结构(C++)
目录 概述 成员变量 创建销毁 根节点访问 路径压缩 启发式合并 复杂度 Code 概述 并查集,故名思议,能合并、能查询的集合,在图的连通性问题和许多算法优化上着广泛的使用。 这是一个什么数据结构呢? 一般来讲,并查集是…...

基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) PSO优化过程: PSO优化前后,模型训练对比: 数据预测对比: 误差回归对比&a…...
PyTorch 的 DataLoader 类介绍
DataLoader 类 功能与作用 PyTorch 是一个流行的开源机器学习库,它提供了一个名为 DataLoader 的类,用于加载数据集并将其封装成一个可迭代的对象。DataLoader 可以自动地将数据集划分为多个批次,并在训练过程中迭代地返回这些批次。是用于加…...

【设计模式系列】命令模式
目录 一、什么是命令模式 二、命令模式的角色 三、命令模式的典型应用场景 四、命令模式在Runnable中的应用 一、什么是命令模式 命令模式(Command Pattern)是一种行为设计模式,它将一个请求或简单操作封装为一个对象。这个模式提供了一种…...
uniapp中使用lottie实现JSON动画
uniapp中使用lottie实现JSON动画 不喜欢废话直接开干一、引入相关依赖二、在项目的目录新建目录结构三、操作步骤四、编写自定义组件代码五、组件的使用提一嘴更多lottie-web常用方法添加点击事件 不喜欢废话直接开干 一、引入相关依赖 npm install lottie-web # 如果有问题可…...

AcWing275
题目重述 这道题的核心是利用方格取数模型的思想,将两条路径的传递过程映射为同时出发的两条路径,避免重复格子的经过。题解通过以下步骤解题: 路径映射:从 (n, m) 回到 (1, 1) 的路径,可以转换成 (1, 1) 到 (n, m) …...

Windows系统部署redis自启动服务【亲测可用】
文章目录 引言I redis以本地服务运行(Windows service)使用MSI安装包配置文件,配置端口和密码II redis服务以终端命令启动缺点运行redis-server并指定端口和密码III 知识扩展确认redis-server可用性Installing the Service引言 服务器是Windows系统,所以使用Windows不是re…...

深入了解机器学习 (Descending into ML):线性回归
人们早就知晓,相比凉爽的天气,蟋蟀在较为炎热的天气里鸣叫更为频繁。数十年来,专业和业余昆虫学者已将每分钟的鸣叫声和温度方面的数据编入目录。Ruth 阿姨将她喜爱的蟋蟀数据库作为生日礼物送给您,并邀请您自己利用该数据库训练一…...

每日OJ题_牛客_集合_排序_C++_Java
目录 牛客_集合_排序 题目解析 C代码 Java代码 牛客_集合_排序 集合_牛客题霸_牛客网 (nowcoder.com) 题目解析 笔试题可直接用set排序,面试可询问是否要手写排序函数,如果要手写排序,推荐写快排。 C代码 #include <iostream> …...

鸿蒙网络编程系列27-HTTPS服务端证书的四种校验方式示例
1. 服务端数字证书验证的问题 在鸿蒙客户端对服务端发起HTTPS请求时,如果使用HttpRequest的request发起请求,那么就存在服务端数字证书的验证问题,你只有两个选择,一个是使用系统的CA,一个是使用自己选定的CA…...
scala继承
Scala中继承的定义为在原有类的基础上定义一个新类,原有类称为父类,新类称为子类。 当子类从父类中继承的方法不能满足需要时,子类需要有自己的行为,怎么办? 此时使用override可以重写父类方法。 class Aniaml(){va…...

【Hive】2-Apache Hive概述、架构、组件、数据模型
Apache Hive概述 什么是Hive Apache Hive是一款建立在Hladoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访…...
关于目前面试八股文的一些心得体会
现在是2024年10月,自22年开始,明显感觉到整个计算机行业,越来越卷了。一方面,随着信息的传播,越来越多的新人涌入了这个赛道,另一方面,众所周知的原因,不管大厂还是小厂在经历寒冬之…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...