第二章 :查找与排序-------2.18题目讲解_在有空字符串中的有序字符串数组中查找

最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解 本系列是对最全的2021蓝桥杯算法课《算法很美》的笔记总结和归纳 学习视频:算法很美 第一章 1.1课程介绍 阅读详情

在有空字符串中的有序字符串数组中查找:

 

#include<iostream>
using namespace std;

int indexOf(string arr[],string p,int length){
	int begin=0;
	int end=length-1;
	
	// 可能取到等号,begin、end相邻,正确解在end,indexOfMid指向begin所指元素
	//经过循环,begin+1,与end重合,仍可进入循环求得正确解 
	while(begin<=end){   
		int indexOfMid=begin+((end-begin)>>1);
		while(arr[indexOfMid].compare("")==0){
			indexOfMid++;
			//千万注意!  =>  begin、end、indexOfMid指向同一个元素的时候 
			if(indexOfMid>end) return -1;
		}
		if(arr[indexOfMid].compare(p)>0){
			end=indexOfMid-1;
		}
		else if(arr[indexOfMid].compare(p)<0){
			begin=indexOfMid+1;
		}
		else{
			return indexOfMid;
		}
	}
	return -1;
}

int main(){
	string arr[]={"a","","ac","","ad","b","","ba"};
	int res=indexOf(arr,"b",8);
	cout<<res<<endl;
	
	cout<<indexOf(arr,"c",8);		
	return 0;
}

结果:

2015年高教社杯全国大学生数学建模竞赛 A 题:《太阳影子定位》真题解析与 MATLAB 解决方案 🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。 阅读详情

相关推荐

京东商品数据爬取实战:用Selenium+代理IP绕过最新反爬机制(附完整代码)

本文深入解析京东商品数据采集技术,详细介绍了如何利用Selenium与智能反反爬策略绕过京东最新的反爬机制。通过实战案例和完整代码,帮助开发者掌握高效采集京东商品数据的方法,包括动态参数加密、行为验证识别及分布式采集架构设计等关键技术。

cc789的博客 1061

Leetcode每日好多题:排序算法+字符串相关问题

第一章 红黑树和AVL树 树的旋转(当平衡因子不在-1,1,0中) 红黑树 第二章 排序算法 1、简单的排序 冒泡排序 遍历每个位置的元素,与相邻的数字作比较,不断交换位置。 def main(nums): n=len(nums) for i in range(n): for j in range(0,n-i-1): if nums[j]>nums[j+1]: nums[j],nums[j+1]=nums[

JJJJJJames的博客 1241

海思Hi3516平台集成IMX214 Sensor实战:从I2C调试到VI通路构建

本文详细记录了在海思Hi3516平台上集成索尼IMX214图像传感器的完整实战过程。从硬件I2C通讯调试、驱动层适配,到上层VI通路构建与ISP配置,提供了系统性的排查步骤与代码修改要点,旨在帮助开发者快速打通从Sensor到屏幕的完整视频采集链路,解决集成过程中的常见问题。

tcp8optimizer的博客 597

从零开始学数据结构系列之第六章《插入排序》

但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。原图例子:首先我们按顺序来拍的话,是 4 3 5 1 9 6 ,4 是第一个,后面6是最后一个。5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置。我们发现,3是比4小的,所以4要后移一位,3调头至4前面。

铁匠匠匠的博客 1221

sysrepo 开发者指南(一个基于libyang与支持rpc的数据库)

sysrepo 开发者指南(一个基于libyang与支持rpc的数据库) 日志记录 默认情况下,所有 Sysrepo 日志记录都处于关闭状态。如果启用,日志消息有 3 种输出。它们可以写入stderr、由 处理syslog或简单地传递给回调。 请务必注意,启用 Sysrepo 日志记录也会修改libyang日志记录设置。错误消息被视为标准 Sysrepo 错误,其他严重性较低的消息完全隐藏。要更改此行为,只需在启用 Sysrepo 日志记录后调整libyang日志记录设置。 此外,几乎每个 Sysrepo

weixin_43489394的博客 9230

用Python手把手教你实现一个多层感知机(MLP)——从理论到代码实战

本文详细介绍了如何使用Python和Theano库从零开始实现多层感知机(MLP),涵盖从核心原理到代码实战的全过程。通过构建隐藏层、输出层和完整MLP模型,结合权重初始化、激活函数选择和训练技巧,帮助开发者深入理解神经网络工作机制,并应用于实际机器学习任务。

web39explorer的博客 971

从零开始学数据结构系列之第五章《顺序查找》

以上就是所有内容,对大家有用的话点个关注!

铁匠匠匠的博客 1137

保姆级教程:如何将仅限客户端使用的免费大模型(Gemini、Antigravity、Qwen Code、Kiro 等)转为任何应用可调用的 OpenAI 兼容标准接口

大模型 API 费用太贵?💸 这篇文章分享一个薅羊毛神器,能把 Gemini、Qwen Code、Kiro 等客户端专属的免费大模型转换成标准 OpenAI 兼容接口 🔌。支持多协议互转、账户池管理、Web 管理界面,Docker 一键部署,零成本调用 Claude Opus 4.5、Gemini 3 Pro 等高级模型 ✅

XiaoqiangClub的博客 1036

从零开始学数据结构系列之第五章《顺序查找-带哨兵》

​ 常规的查找,要先判断是否有越界行为,直接在进行判断,以上就是所有内容,对大家有用的话点个关注!​ 对比无哨兵的常规查找,直接就优化了一个判断步骤。

铁匠匠匠的博客 2054

PCL点云DBSCAN聚类算法:基于密度的点云聚类

核心点是在给定半径内拥有足够多邻居点的点,边界点是在给定半径内没有足够多邻居点但是位于核心点的邻域内的点,噪声点是既不是核心点也不是边界点的点。本文将介绍PCL中的DBSCAN(基于密度的空间聚类应用噪声)算法,用于点云数据的聚类。上述示例代码首先从PCD文件中读取点云数据,并设置了DBSCAN聚类的参数,包括邻域搜索半径(epsilon)和邻域内最小点数(min_points)。需要注意的是,示例代码中的点云数据格式为pcl::PointXYZ,如果使用其他类型的点云数据,需要相应地修改代码。

LpmShell的博客 1242

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

浙大Python题目集 PTA解析

引言 业余学习python有两年多时间,中间进步最快的阶段是我兼职给学生讲python课,怎么讲好一个知识点、如何给学生布置合适的作业、评判学生作业和作业讲解都让我对自己所学的知识做了一个很好的梳理,编程能力也得到一定提升。看来最好的学习方法就是学以致用,不断逼着自己去产出一些东西,反过来就能更好地去学习。 为进一步加强自己的编程基本功,最近业余时间好好琢磨了浙大PTA的python习题,花了10天左右认真做了一遍,感觉有些收获。 现在用写博客的方式好好整理一下。第一次写博客,写的不好的地方慢慢改善。

amateur_python的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

AI算法题库全面解析(1024道面试真题大公开):攻克技术面最后一关

掌握AI算法面试核心技巧,破解高频难题。精选「AI算法题1024道:面试必刷清单」,覆盖大厂真题、解题思路与优化方法,适用于求职刷题、技术提升和面试冲刺。系统解析动态规划、机器学习等高频考点,助你高效备战技术面最后一关,值得收藏。

ProceGlow的博客 750

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spark期末复习总结(2-5)章

new Array[T](数组长度) //定义定长数组ArrayBuffer[T]() //定义变长数组注意:定义变长数组时,则需要导包import scala,collection.mutable.ArrayBuffer通过一个例子来演示Scala数组简单使用scala中,集合有三大类: List、set以及MapScala 集合分为可变的(mutable)和不可变(immutable)的集合。Scala是一种面向对象的语言。

2303_77733754的博客 2006

python算法题记录

开一个博文,记录下写的python算法,主要是用《python程序员面试算法宝典》这本书上的题目,还有一些平时上课的作业等等。 第一章 链表 1.1链表逆序

WenbinYao&YouweiHu 1276

Go slices泛型实战指南:5个你必须掌握的核心用法

掌握Go 1.21 slices泛型用法,提升代码复用与类型安全。本文详解切片操作、类型约束、通用排序等5大核心场景,结合实战示例解析泛型函数设计精髓,显著简化集合处理逻辑。方法实用,结构清晰,值得收藏。

FuncTide的博客 621

php 5范例代码查询辞典 pdf,PHP 5范例代码查询辞典

第1章 PHP数据类型与概念概述 11-1 变量 11-2 数值 31-3 数组 41-4 字符串 51-5 正则表达式 61-6 函数 71-7 项目:查找值的数据类型 81-8 项目:发现可用的变量、常量、函数、类和接口 101-9 获得当前脚本的信息 12小结 16下章预览 16第2章 类、对象和接口概述 17基本概念 182-1 使用构造函数创建实例 192-2 使用默认构造函数 212-...

weixin_32784349的博客 252

如何用C++打造低延迟高吞吐网络引擎:深入线程池与事件驱动模型

掌握C++网络请求并发处理核心技术,构建低延迟高吞吐的网络引擎。详解线程池与事件驱动模型设计,适用于高性能服务器开发,提升系统响应效率与稳定性。值得收藏

Instrustar的博客 787

python如何动态生成35位字符串_神奇的是,每天学习2小时,3个月后你将完全学会Python...

首先,你了解Python吗?Python是一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。由于具有丰富和强大的库,又被称为胶水语言,Python 极其容易上手,主要源于Python有极其简单的说明文档。Python 的应用领域分为系统编程,用户图形接口,Internet 脚本,组件集成,数据库编程,快速原型,数值计算和科学计算编程,游戏、图像、人工智能、XML 、机器人编程等等。本次教程...

weixin_39726873的博客 236

求职必备、面试刷题不二之选,此两份算法刷题宝典让你收集大厂offer

写在前面 这几年IT技术蓬勃发展,对技术人才的需求日益增长,程序员招聘市场也如火如荼。在有限的三五轮面试中,国外流行让面试者编程解决某些数据结构和算法的题目,通过观察面试者编码的熟练程度、思考的速度和深度来衡量面试者的能力和潜力。除字节跳动之外国内以百度、阿里、腾讯为首的互联网企业也都逐步开始采用算法面试来筛选人才。 如今想要收获大厂offer,在面试的前几轮,总是躲不开算法这座大山。 常听人说,算法很难。这话没错。算法本身是是一个艰深的方向。但是算法题却有据可循。通过有针对性的学习和练习,我们完全可

m0_50180963的博客 748

Java基础

第一章 1.1 IDEA常用快捷键 快捷键 功能 Alt+Enter 导入包,自动修正代码 Ctrl+Y 删除光标所在行 Ctrl+D 复制光标所在行内容,插入光标位置下面 Ctrl+Alt+L 格式化代码 Ctrl+/ 单行注释 Ctrl+Shift+/ 选中代码注释多行注释 Alt+Insert 自动生成代码 Shift+F6 整体选中一个变量 ...

qq_45659384的博客 4772

Build a Large Language Model (From Scratch) 第二章 Working with text data

你将学习如何为训练大型语言模型(LLMs)准备输入文本。这包括将文本拆分为单个单词和子词标记,然后将这些标记编码为适合LLM的向量表示。你还将了解高级标记化方案,如字节对编码(BPE)——这是GPT等流行LLM中使用的技术。最后,我们将实现一种采样和数据加载策略,以生成训练LLM所需的输入-输出对。

jsdoulaoula的博客 1533

从零开始学数据结构系列之第四章《prim算法(普里姆算法)代码讲解》

【代码】从零开始学数据结构系列之第四章《prim算法(普里姆算法)代码讲解》

铁匠匠匠的博客 1587

JavaScript基础

js

huan 508

知识点清单

第一章 - 算法基础 1.1 算法复杂度计算 1.2 神奇的兔子数列 第二章 - 线性表 2.1 链表 2.2 链表实例 第三章 - 栈与队列 3.1 栈 3.2 队列 第四章 - 数组 4.1 数组 4.2 特殊矩阵的压缩存储 第五章 - 字符串 5.1 字符串 5.2 KMP算法 第六章 - 二叉树 6.1 二叉树存储 6.2 二叉树遍历 第七章 - 树+贪心 7.1 哈夫曼树 7.2 哈夫曼编码 第八章 - 图的存储 8.1 邻接矩阵 8.2 邻接表 第九章 - 图搜索 9.1 深度优先搜索 9.2

sancpp的博客 4507

从零开始学数据结构系列之第五章《B树的插入例子2》

但是分配固定结点大小的方法会存在浪费的情况,比如key为28,29所在的结点,还有2个key的位置没有使用,但是已经不可能继续在插入任何值了,因为这个结点的前序key是27,后继key是30,所有整数值都用完了。3)以结点中间的key为中心分裂成左右两部分,然后将这个中间的key插入到父结点中,这个key的左子树指向分裂后的左半部分,这个key的右子支指向分裂后的右半部分,然后将当前结点指向父结点,继续进行第3步。插入在叶子结点进行,在插入的过程中,如果关键字的数量>=m,就要进行分裂操作。

铁匠匠匠的博客 1783
上一篇: 第二章 :查找与排序-------2.17解题实战_旋转数组的最小数字(改造二分法)
下一篇: 第二章 :查找与排序-------2.19题目详解_找出最长连续递增子序列
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值