【顺序表】05 删除有序顺序表中值在s与t之间的数

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
算法题上机准备

😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言

题目

从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。

算法思路

法1:按照04 删除值s与t之间的数的思路逐个判定

法2:【优化】 观察题目所给条件,给的是有序的顺序表,故只需找到小于s的最大值的下标l 和大于t最小值的下标r,然后将r后面的值往l后面覆盖,最后再维护L的长度即可。
寻找下标有两种方式:①遍历 ②折半查找

题解

①遍历

void delStoT(SqList& L, ElemType s, ElemType t) {if (L.length == 0) {printf("顺序表为空,无法操作\n");return;}else if (s >= t) {printf("s、t输入不合法\n");return;}else {int l = 0, r = 0,flag = 0;for (int i = 0; i < L.length; ++i) {if (L.data[i] < s){l = i;}if (flag == 0 && L.data[i] > t){r = i;flag = 1;}}if (l > r) {L.length = l + 1;}while (r < L.length) {l++;L.data[l] = L.data[r];r++;}L.length = l + 1;}
}
void delStoT(SqList& L, ElemType s, ElemType t) {if (L.length == 0) {printf("顺序表为空,无法操作\n");return;}else if (s >= t) {printf("s、t输入不合法\n");return;}else {int l = 0;for (int i = 0; i < L.length; ++i) {if (L.data[i] < s){l++;}else if (L.data[i] > t){L.data[l++] = L.data[i];}}L.length = l ;}
}

②折半查找

//查找大于等于target最左的位置下标
int findBigEqualLeft(SqList L, ElemType target) {int left = 0, right = L.length - 1;int ans = -1;while (left <= right) {int mid = (left + right) >> 1;if (L.data[mid] >= target) {ans = mid;right = mid - 1;}else {left = mid + 1;}}return ans;
}
//查找大于target最左的位置下标
int findSmallEqualRight(SqList L, ElemType target) {int left = 0, right = L.length - 1;int ans = -1;while (left <= right) {int mid = (left + right) >> 1;if (L.data[mid] <= target) {ans = mid;left = mid + 1;}else {right = mid - 1;}}return (ans == -1 ? ans : ans + 1);
}
void delStoT_3(SqList& L, ElemType s, ElemType t) {if (L.length == 0) {printf("顺序表为空,无法操作\n");exit(0);}else if (s >= t) {printf("s、t输入不合法\n");exit(0);}else {int findBigSFirst = findBigEqualLeft(L, s);if (findBigSFirst == -1) {return;}int findBigTFirst = findSmallEqualRight(L, t);if (findBigTFirst == -1) {return;}//没有比t大的元素if (findBigTFirst >= L.length) {L.length -= (findBigTFirst - findBigSFirst);return;}else {for (int i = findBigTFirst; i < L.length; i++) {L.data[findBigSFirst++] = L.data[i];}L.length = findBigSFirst;}}
}

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

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

相关文章

deepspeed win11 安装

目录 git地址: aio报错: 编译 报错 ops已存在: 修改拷贝代码: git地址: Bug Report: Issues Building DeepSpeed on Windows Issue #5679 microsoft/DeepSpeed GitHub aio报错: setup.py 配置变量 os.environ[DISTUTILS_USE_SDK]=1 os.environ[DS_BUILD_AIO]=…

Unity3d自定义TCP消息替代UNet实现网络连接

以前使用UNet实现网络连接,Unity2018以后被弃用了。要将以前的老程序升到高版本,最开始打算使用Mirro,结果发现并不好用。那就只能自己写连接了。 1.TCP消息结构 (1). TCP消息是按流传输的,会发生粘包。那么在发射和接收消息时就需要对消息进行打包和解包。如果接收的消息…

日期工具类:获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)

问题背景 获取 当前周 | 上一周 | 下一周 的第一天&#xff08;周一&#xff09;和最后一天&#xff08;周天&#xff09;。 例如&#xff1a; 输入&#xff1a;2024-6-21, current 输出&#xff1a;{"firstDay": "2024-6-17","lastDay": &qu…

springboot代理配置,本地访问测试环境数据库、测试环境elasticsearch

springboot代理配置&#xff0c;本地访问测试环境数据库、测试环境elasticsearch 背景 本地项目启动需要直接连接测试环境的数据库、ES以及其他资源 配置 ES和其他一些资源的访问通过springboot配置走代理访问。比如我这里 EnableAsync EnableScheduling SpringBootApplic…

Nutch爬虫在大数据采集中的应用案例

引言 在当今信息爆炸的时代&#xff0c;大数据的价值日益凸显。网络作为信息的海洋&#xff0c;蕴藏着丰富的数据资源。Nutch&#xff0c;作为一个开源的Java编写的网络爬虫框架&#xff0c;以其高效的数据采集能力和良好的可扩展性&#xff0c;成为大数据采集的重要工具。本文…

Mac安装多个jdk环境(jdk8+jdk17)保姆级

Mac安装多个jdk环境&#xff08;jdk8jdk17&#xff09;保姆级 背景&#xff1a;新机安装开发环境发现需要找很多文章&#xff0c;&#xff0c;&#xff0c;&#xff0c;这里一篇文章安装所有环境 文章目录 Mac安装多个jdk环境&#xff08;jdk8jdk17&#xff09;保姆级&#x1f…

Lambda 表达式是为了解决啥问题,语法,使用规则,c++中的常用用法示例

2024/6/21 11:20:09 Lambda 表达式的主要目的是为了简化函数对象&#xff08;或称为函数符&#xff09;的创建和使用。传统的函数对象需要定义一个具名的类或者使用函数指针&#xff0c;而Lambda 表达式可以在需要时直接定义一个匿名函数&#xff0c;从而减少代码量和提高代码…

C语言入门系列:指针入门(超详细)

文章目录 一&#xff0c;什么是指针1&#xff0c;内存2&#xff0c;指针是什么&#xff1f; 二&#xff0c;指针的声明1&#xff0c;声明指针类型变量2&#xff0c;二级指针 三&#xff0c;指针的计算1&#xff0c;两个指针运算符1.1 *运算符1.2 & 运算符1.3 &运算符与…

树莓派3b+结合 tb6600用pi4j2程序库,用java编写控制软pmw的方式控制步进电机的转速,详细解析

结论:速度控制参数,主要的不是占空比,而是pmw针脚的输出主频参数:frequency。占空比对速度的影响也有,但比较小。 在进行速度详细控制之前,我们先读取电机和电机驱动器的几个参数。 电机:步进角 =1.8度 电流:1.7A 扭矩:0.55N.M 驱动器TB6600:查看面板的数值,并设置…

【Arthas案例】应用包含两个相同全限定类名StaticLoggerBinder,引起log4j.Level类找不到异常

3分钟内解决问题 两个不同的GAV依赖冲突&#xff0c;包含相同全限定类名&#xff0c;引起ClassNotFoundException Maven依赖的三坐标体系GAV(G-groupId&#xff0c;A-artifactId&#xff0c;V-version) 【案例1】某应用依赖两个GAV不同的jar&#xff0c;但包含两个相同全限定类…

OpenCv形态学(一)

目录 形态学转换 结构元素 腐蚀 膨胀 开运算 闭运算 形态学梯度 顶帽 黑帽 图像轮廓 查找轮廓 绘制轮廓 形态学转换 形态变换是一些基于图像形状的简单操作。通常在二值图像上执行。它需要两个输入&#xff0c;一个是我们的原始图像&#xff0c;第二个是决定操作性…

6月21日(周五)AH股总结:沪指失守3000点,恒生科技指数跌近2%,多只沪深300ETF午后量能显著放大

内容提要 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点。白酒及光刻机概念集体走低&#xff0c;中芯国际港股跌超2%。CRO医药概念及水利股逆势走强。 A股低开低走 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点&#xff0c;跌0.24%。深成指跌0.04…

如何在 macOS 上安装 Docker Desktop

如何在 macOS 上安装 Docker Desktop Docker 是一个用于开发、部署和运行应用程序的开放平台。Docker Desktop 是 Docker 在 macOS 和 Windows 上的官方客户端&#xff0c;它使开发者能够轻松地在本地环境中构建、运行和共享容器化应用程序。本文将详细介绍如何在 macOS 上安装…

写一个chrome插件

创建一个 Chrome 插件&#xff08;也叫扩展&#xff09;涉及以下几个基本步骤&#xff1a; 创建目录结构编写 manifest.json 文件添加功能代码&#xff08;HTML, CSS, JavaScript&#xff09;加载和测试扩展 下面是一个简单的 Chrome 插件的示例。这个插件会在浏览器的工具栏…

从零到一学FFmpeg:avformat_alloc_output_context2 函数详析与实战

文章目录 前言一、函数原型二、功能描述三、使用场景四、AVFormatContext 结构体五、代码实例 前言 avformat_alloc_output_context2 是FFmpeg库中的一个函数&#xff0c;用于为输出多媒体文件初始化一个AVFormatContext结构体。这个函数在开始输出音频、视频数据到文件之前被…

ubuntu 20.04 访问csdn报错 Secure connection failed 解决

问题原因&#xff1a; 我一边更新源 sudo apt update & apt upgrade一边在看csdn&#xff0c;估计是这个导致的. 所以我直接把华为源换成了阿里源。 sudo apt update & apt upgrade再更新一次&#xff0c;解决。

探索语言模型的智能飞跃:预训练损失与突现能力的新视角

在人工智能的辉煌编年史中&#xff0c;语言模型&#xff08;LMs&#xff09;的崛起标志着自然语言处理领域的一个巨大飞跃。随着技术的进步&#xff0c;这些模型不仅在规模上日益庞大&#xff0c;更在性能上不断刷新着人们的认知边界。它们在问答、翻译、文本摘要等任务上展现出…

SQlyog连接到主机时报错:错误号码2058Plugin sha256 password could not be loaded

1.问题重述 MySQL版本&#xff1a;8.4.0 SQlyog连接到主机时报错&#xff1a;错误号码2058Plugin sha256 password could not be loaded&#xff0c;如下图 经过查阅资料得知出现这个问题是因为 mysl8之前的加密规则是 mysql_native_password &#xff0c;而在mysql8之后&…

Vue DevTools

介绍 什么是 Vue DevTools&#xff1f; Vue DevTools 是一款旨在增强 Vue 开发者体验的工具&#xff0c;它是一款功能强大且用途广泛的工具&#xff0c;可以在使用 Vue 应用程序时显着提高您的生产力和调试能力。它的实时编辑、时间旅行调试和全面检查功能使其成为任何Vue.js开…

帕金森患者饮食指南:科学调养,呵护健康

&#x1f33c;在医学的广阔领域中&#xff0c;帕金森病作为一种慢性神经系统疾病&#xff0c;除了需要专业的医疗治疗外&#xff0c;日常饮食的调养也显得尤为重要。 今天&#xff0c;就为大家带来一份专为帕金森患者打造的饮食建议&#xff0c;希望能为大家的健康调养提供一些…