顺序表算法题

在学习了顺序表专题后,了解的顺序表的结构以及相关概念后就可以来试着完成一些顺序表的算法题了,在本篇中将对三道顺序表相关的算法题进行讲解,希望能对你有所帮助,一起加油吧!!!


 1.移除元素

27. 移除元素 - 力扣(LeetCode)

在本题中通过以上题目说明,题目要求我们实现的代码是能将数组中的值为val的值都删除 

例如以下数组

在删除都为2的元素后数组就要变为以下形式,而除了留下的元素其他的元素值变为什么我们不关心

因此要解决这道题就要像以下定义两个变量str和tmp一开始都为数组下标0,之后通过str遍历数组,如果str的数组下标位置的值不为val,将数组下标str的值赋值给数组下标tmp的位置并且tmp和str都加一,如果str的数组下标位置的值为val就只str加一

例如以下就是一个数组使用以上方法删除值为2元素的开始和最终的图示 

//在这题目给的函数内,函数的参数nums为指向数组的整型指针,nunsSize为数组的元素个数
//val为要删除的元素的值
int removeElement(int* nums, int numsSize, int val) 

解题代码 :

int removeElement(int* nums, int numsSize, int val) 
{int str,tmp;str=tmp=0;while(str<numsSize){if(nums[str]!=val){nums[tmp]=nums[str];tmp++;}str++;}return tmp;
}

 

 2.删除有序数组中的重复项

26. 删除有序数组中的重复项 - 力扣(LeetCode)

在看完以下题目的描述后就可以知道题目要我们实现的代码功能是将数组中的重复元素删除 

例如以下数组示例

数组在删除重复元素就变为以下形式

 因此要解决这道题就要像以下定义两个变量dest一开始为数组下标0src一开始为数组下标1若数组dest下标位置的值不等于数组下标src位置的值就先将dest加一,之后将下标src位置的值赋值给下标为dest位置的值,之后再将src加一;若数组dest下标位置的值等于数组下标src位置的值就只将src加一

例如以下就是一个数组使用以上方法删除重复元素的开始和最终的图示

//在这题目给的函数内,函数的参数nums为指向数组的整型指针,nunsSize为数组的元素个数
int removeDuplicates(int* nums, int numsSize) 

解题代码 : 

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

3.合并两个有序数组 

88. 合并两个有序数组 - 力扣(LeetCode)

在通过以上题目描述后就可以了解到题目要求我们是将两个有效数组合并,并且要将两个合并后的数组保存到第一个数组中,保存到数组的数据是递增的。第一个数组的元素个数一开始就为合并后的总个数

例如以下数组示例

要实现这题中两个有效数组的合并就先定义变量l1为第一个数组的有效元素的最后一个下标,定义变量l2为第二个数组的末尾,定义变量l3为第一个数组的末尾,之后比较l1和l2位置的值将这两个当中大的值插入到l3的位置当中,之后l3减-1并且l1-1或者l2-1。最终在l1或者l2小于0时就停止以上的操作,这时如果是l1先为0就说明第二个数组还有元素未进入到第一个数组当中,这时就要循环将元素导入第一个数组当中

例如以下示例 

最终合并完两个数组后变为以下形式 

//在这题目给的函数内,函数的参数nums1为指向第一个数组的整型指针,m为第一个数组有效元素个数
//数nums2为指向第二个数组的整型指针,n为第二个数组有效元素个数
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)

完整代码: 

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){nums1[l3--]=nums2[l2--];}
}

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

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

相关文章

nginx转发netty长链接(nginx负载tcp长链接配置)

首先要清楚一点&#xff0c;netty是长链接是tcp连接不同于http中负载在http中配置server监听。长连接需要开启nginx的stream模块(和http是并列关系) 安装nginx时注意开启stream&#xff0c;编译时加上参数 --with-stream &#xff08;其他参数根据自己所需来加&#xff09; …

脊髓损伤的小伙伴锻炼贴士

Hey小伙伴们~&#x1f44b; 今天要跟大家聊一个超燃又超温馨的话题&#xff01;&#x1f31f; 对于我们脊髓损伤的小伙伴们来说&#xff0c;保持身体活力&#xff0c;不仅是健康的小秘诀&#xff0c;更是拥抱美好生活的超能量哦&#xff01;&#x1f4aa; #脊髓损伤# 首先&…

Cache 替换策略--PLRU算法详解

一、引言 LRU&#xff08;Least Recently Used&#xff09;是 cache 的经典替换策略之一&#xff0c;但当 Cache 的路数比较大时&#xff08;多路组相连结构&#xff09;&#xff0c;实现 LRU 的硬件开销就会变得很大。现代处理器一般会考虑使用 PLRU&#xff08;pseudo-LRU&a…

一文带你搞懂C++运算符重载

7. C运算符重载 C运算符重载 什么是运算符重载 运算符重载赋予运算能够操作自定义类型。 运算符重载前提条件&#xff1a; 必定存在一个自定义类型 运算符重载实质: 就是函数调用 友元重载 类重载 在同一自定义类型中&#xff0c;一个运算符只能被重载一次 C重载只能重载…

vue element-ui日期控件传参

前端&#xff1a;Vue element-ui <el-form-item label"过期时间" :rules"[ { required: true, message: 请选择过期时间, trigger: blur }]"><el-date-picker v-model"form.expireTime" type"date" format"yyyy-MM-dd&…

【C++】透析类和对象(下)

有不懂的可以翻阅我之前文章&#xff01; 个人主页&#xff1a;CSDN_小八哥向前冲 所属专栏&#xff1a;CSDN_C入门 目录 拷贝构造函数 运算符重载 赋值运算符重载 取地址运算符重载 const成员函数 取地址重载 再探构造函数 初始化列表 类型转换 static成员 友元 内…

MySQL查询执行(二):order by工作原理

假设你要查询城市是“杭州”的所有人名字&#xff0c; 并且按照姓名排序返回前1000个人的姓名、 年龄。 假设这个表的部分定义是这样的&#xff1a; -- 创建表t CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT N…

Docker 搭建Elasticsearch详细步骤

本章教程使用Docker搭建Elasticsearch环境。 一、拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.2二、运行容器 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-n

maven clean报错:Failed to delete xxxxx\target\xxxx.jar

问题描述 今天使用maven的clean命令时候出错如下&#xff1a; 分析问题 target文件可能时编译的文件被其他程序占用&#xff0c;导致资源无法回收 解决问题 1 打开任务管理器 右键任务栏。进入任务管理器 点击详细信息 2 进入 点击性能&#xff0c;点击打开资源监视器 …

推荐2024年大家都在用的4款ai写作免费神器

最近公司年中总结&#xff0c;要写好多像工作报告&#xff0c;工作计划之类的文件。我尝试着使用AI写作工具帮助&#xff0c;没想到效果意外的好&#xff0c;省事又省力。如果你也有和我一样的烦恼的话&#xff0c;可以去使用这4个写作工具&#xff0c;都是可以免费使用的。 1、…

错误代码0x80070035是什么情况?针对错误代码0x80070035的解决方法

错误代码 0x80070035 通常与网络连接和文件共享有关&#xff0c;表示“找不到网络路径”。这个问题可能由多种原因引起&#xff0c;包括网络设置不当、服务未启动、注册表配置错误等。今天这篇文章就和大家分享几种针对错误代码0x80070035的解决方法。 针对错误代码0x80070035问…

express连接mysql

一、 安装express npm install express --save二、express配置 //引入 const express require("express"); //创建实例 const app express(); //启动服务 app.listen(8081, () > {console.log("http://localhost:8081"); });三、安装mysql npm i m…

简过网:大学生考公,一定要先好好看看这篇文章!

大家好&#xff0c;我是简过网&#xff0c;今天这篇文章我们来聊聊关于大学生考公的那些事儿&#xff0c;希望能给大学生们一点点的帮助&#xff01; 首先&#xff0c;可能有朋友会问了&#xff0c;大学生一般从什么时候开始备考公务员呢&#xff0c;在这里小编建议大家从大三…

mysql1055报错解决方法

目录 一、mysql版本 二、 问题描述 三、解决方法 1.方法一&#xff08;临时&#xff09; 2.方法二&#xff08;永久&#xff09; 一、mysql版本 mysql版本&#xff1a;5.7.23 二、 问题描述 在查询时使用group by语句&#xff0c;出现错误代码&#xff1a;1055&#xf…

FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前文章FastAPI&#xff08;七十三&#xff09;实战开发《在线课程学习系统》接口开发-- 回复留言&#xff0c;那么我们这次分享删除留言接口的开发…

MySQL可重复读的隔离机制下是否彻底解决了幻读?

答案&#xff1a;没有彻底解决。 一、什么是幻读&#xff1f; 当同一个查询在不同时间产生不同的结果集时&#xff0c;事务中就会出现幻读问题。 幻读关注的是记录数量的不同。 不可重复读关注的是记录内容的不同。 二、快照读和当前读 InnoDB引擎的默认隔离级别是可重复读&…

搭建自己的金融数据源和量化分析平台(四):自动化更新上市公司所属一级、二级行业以及股票上市状态

前面做了更新沪深交易所的上市股票列表的读取和更新&#xff0c;但一旦股票退市则需要在数据库里将该股票状态更新为退市&#xff0c;同时附上退市日期&#xff0c;将股票名更改为XX退。 此外深交所下载的xls解析出来是没有上市公司所属的二级行业的&#xff0c;因此还需要建立…

鸿蒙仓颉语言之【安全密码库crypto4cj】功能示例

功能示例 MD5使用样例 from crypto4cj import md5cj.*main() { var md: Array<UInt8> Array<UInt8>(16, item: 0)var result: String String(Array<Char>(33, item: 0))var str: String "helloworld"var ret md5(str.toUtf8Array(), md)r…

不支持jdk8的jenkins部署jdk8项目

1、背景 目前最新的jenkins必须基于jdk8以上&#xff0c;才能安装。jenkins最新的插件部分也不支持jdk8了。 2、全局工具配置 配置一个jdk8 配置一个jdk8以上的版本&#xff0c;如jdk17 3、部署maven项目 jdk17项目 可以直接使用maven插件&#xff0c;部署。 jdk8项目 由…