在C++中,查找未排序数组中元素的起始索引和结束索引

在c++中,查找未排序数组中元素的起始索引和结束索引

在这个问题中,我们得到一个包含 n 个未排序整数值的数组 aar[] 和一个整数 val。我们的任务是在未排序的数组中查找元素的开始和结束索引

对于数组中元素的出现,我们将返回,

“起始索引和结束索引”(如果在数组中找到两次或多次)。

“单个索引”(如果找到)

立即学习“C++免费学习笔记(深入)”;

如果数组中不存在,则“元素不存在”

让我们举个例子来理解问题,

示例 1

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2Output : starting index = 0, ending index = 5

解释

元素 2 出现两次,

第一次出现在索引 = 0 处,

第二次出现在索引处= 5

示例 2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5Output : Present only once at index 2

解释

元素 5 在索引 = 2 处仅出现一次,

示例 3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7Output : Not present in the array!

解决方法

解决该问题的一个简单方法是遍历数组。

我们将遍历数组并保留两个索引值:first 和last。第一个索引将从头开始遍历数组,最后一个索引将从数组尾开始遍历。当第一个和最后一个索引处的元素值相同时结束循环。

算法

步骤1 – 循环遍历数组

步骤1.1 – 使用第一个索引从开始遍历,使用最后一个索引进行遍历从末尾开始。

步骤 1.2 – 如果任何索引处的值等于 val。不要增加索引值。

步骤 1.3 – 如果两个索引的值相同,则返回。

示例

说明我们解决方案工作原理的程序

#include using namespace std;void findStartAndEndIndex(int arr[], int n, int val) {   int start = 0;   int end = n -1 ;   while(1){   if(arr[start] != val)      start++;   if(arr[end] != val)      end--;   if(arr[start] == arr[end] && arr[start] == val)      break;   if(start == end)      break;}   if (start == end ){      if(arr[start] == val)         cout<<"Element is present only once at index : "<<start;      else         cout<<"Element Not Present in the array";   } else {      cout<<"Element present twice at n";      cout<<"Start index: "<<start<<endl;      cout<<"Last index: "<<end;   }}int main() {   int arr[] = { 2, 1, 5, 4, 6, 2, 9, 0, 2, 3, 5 };   int n = sizeof(arr) / sizeof(arr[0]);   int val = 2;   findStartAndEndIndex(arr, n, val);   return 0;}

输出

Element present twice atStart index: 0Last index: 8

以上就是在C++中,查找未排序数组中元素的起始索引和结束索引的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:50:58
下一篇 2025年12月9日 12:51:58

相关推荐

  • 将数组表示的数字加1(递归方法)

    给定一个数组,该数组是由非负数字表示的数字的集合,将数字加1(增加由数字表示的数字)。数字存储方式是最高位数字是数组的第一个元素。 要将数字加1到由数字表示的数字 从数组末尾开始,加法意味着将最后一个数字4舍入为5。 如果最后一个元素是9,则将其变为0并进位=1。 对于下一次迭代,检查进位,如果加到…

    2025年12月17日
    000
  • 使用C语言在数组中插入元素

    我们可以在任意位置插入元素,这意味着我们可以在数组的起始位置、中间、最后或任意位置插入。 在数组中插入元素后,位置或索引位置增加,但并不意味着数组的大小增加。 插入元素的逻辑是− 输入数组的大小 立即学习“C语言免费学习笔记(深入)”; 输入要插入元素的位置 接下来输入您要在该位置插入的数字 for…

    2025年12月17日
    000
  • 在C语言中,什么是数组的越界索引?

    假设您有一个包含四个元素的数组。那么,数组索引将从0到3,即我们可以访问索引0到3的元素。 但是,如果我们使用大于3的索引,它将被称为索引越界。 如果我们使用越界的数组索引,那么编译器将编译甚至运行。但是,不能保证结果正确。 结果可能不确定,并且会导致许多问题。因此,建议在使用数组索引时要小心。 立…

    2025年12月17日
    000
  • 数组元素的频率是否为质数?

    Suppose we have one array. we have to count how many of the elements present in the array prime number of times. So if the array is {1, 2, 2, 0, 1, 5,…

    2025年12月17日
    000
  • C语言中的数组

    数组是连续内存位置上相同类型元素的集合。最低地址对应于第一个元素,最高地址对应于最后一个元素。 数组索引以零 (0) 开始,以数组大小减一(数组大小 – 1)结束。数组大小必须是大于零的整数。 让我们看一个例子, If array size = 10First index of arra…

    2025年12月17日
    000
  • 如何在C语言中将数组的元素以相反的顺序打印出来?

    尝试按照下面给出的算法以相反的顺序打印元素: 步骤1 – 声明一个大小为5的数组 步骤2 – 使用for循环将5个元素输入到内存中 步骤3 – 以相反的顺序显示元素 立即学习“C语言免费学习笔记(深入)”; 通过递减for循环 唯一的逻辑是通过for循环反转元素:…

    2025年12月17日
    000
  • c语言中数组和指针的区别是什么_数组和指针有什么区别

    数组和指针的核心区别在于:数组是静态存储的同类型数据序列,而指针是动态存储内存地址的变量。1. 数组在声明时大小固定,不能改变;2. 指针可以指向不同的内存区域,具有动态性;3. 数组名代表整个数组,本质是符号,不可赋值,而指针是变量,可修改指向;4. 指针数组本质是数组,元素为指针,数组指针本质是…

    2025年12月17日 好文分享
    000
  • 在c语言中引用数组元素时,其数组下标的数据类型允许是什么

    在c语言中引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为“数组名[下标]”,下标可以是整型常量或整型表达式。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 在c语言中引用数组元素时…

    2025年12月17日
    000
  • C语言中数组所占字节怎么算

    数组在内存中所占字节数可以使用sizeof操作符来计算,该操作符是专门用于检测类型或变量或数组在内存中所占有的空间(字节数);语法“sizeof(x)”,其中x是类型名、变量名或数组名等,可以返回x所占字节数。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 相关推荐:C语言…

    2025年12月17日
    000
  • 在c语言中,引用数组元素时,其数组下标的数据类型允许是什么?

    在c语言中,引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。数组是用来存储一系列数据,用于区分数组的各个元素的数字编号称为下标;下标只能为整型常量或整型表达式,如为小数时,将自动取整。 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数…

    2025年12月17日
    000
  • c语言数组在内存中是怎么分配的?

    c语言数组在内存中分配的方法:首先相应的头文件,为负责输入输出的iostream流;然后在主函数中创建一个数组,使用cout语句分别输出各个元素在内存中的地址;最后点击运行按钮进行编译、链接、生成可执行文件。 c语言数组在内存中分配的方法: 1、首先我们打开C语言编译器,可以选择Visual Stu…

    2025年12月17日 好文分享
    000
  • c语言数组冒泡排序是如何实现的?

    方法:1、选定一个数,利用for循环将该数字与另一个数比较;2、用if语句比较两数的大小,根据比较结果进行元素的交换,两两比较,以实现排序。 c语言冒泡排序的方法: 1、先逐个筛选数组中的每个元素 2、再比较每相邻的两个元素 立即学习“C语言免费学习笔记(深入)”; 3、根据比较结果进行元素的交换,…

    2025年12月17日 好文分享
    000
  • 决定数组所占内存单元多少的是什么

    决定数组所占内存单元多少的是:数组元素的个数及其类型。数组就是有序的元素序列。数组是在程序设计中,把具有相同类型的若干元素按有序的形式组织起来的一种形式。 决定数组所占内存单元多少的是:数组元素的个数及其类型。 (推荐学习:c语言教程) 相关知识点介绍: 所谓数组,就是有序的元素序列。 若将有限个类…

    2025年12月17日
    000
  • c++定义数组的方法

    在 c++++ 中如果要声明一个数组,需要指定元素的类型和元素的数量,如下所示: type arrayName [ arraySize ]; arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C++ 数据类型。 (推荐教程:C语言教程) 例如,要声明一个类型为 double…

    2025年12月17日
    000
  • vb数组怎么定义

    vb数组怎么定义 有两种方法定义数组:  1、知道数组的元素个数,那么直接定义 dim a(9) as integer  2、暂时不知道元素个数,或者该数组应用在多个地方 那么如下定义 dim a() as integer 在使用的时候,再重定义一下就可以了 ReDim a(9) 数组的类型可以和变…

    2025年12月17日
    000
  • 深入了解数组、List和ArrayList的区别

    有些知识点可能平时一直在使用,不过实际开发中我们可能只是知其然不知其所以然,所以经常的总结会对我们的提高和进步有很大的帮助。下面本篇文章就来给大家介绍数组、list和arraylist的区别,希望对大家有所帮助。 数组、List和ArrayList的区别 数组在内存中是连续存储的,所以它的索引速度是…

    2025年12月17日
    000
  • c语言数组怎么定义?

    c语言的学习中,数组可以算是基础中比较重要的内容了,也是时常会被使用到的。下面本篇文章就来给大家介绍一下c语言中数组要如何定义,希望对大家有所帮助。 在C语言中,数组分为一维和二维 1、一维数组 定义公式:类型说明符 数组名[常量表达式];     注意:常量表达式包括常量与符号常量,不能包含变量。…

    2025年12月17日
    000
  • C++实现在二维数组中的查找

    今天小编在网上看到一道小题目,是关于在二维数组中的查找,带大家一起来学习一下,感兴趣的好好看看,附上代码可以仿照编写一下哦! 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。…

    2025年12月17日
    000
  • C#通过KD树进行距离最近点的查找的实例分析

    这篇文章主要为大家详细介绍了c#通过kd树进行距离最近点的查找,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文首先介绍Kd-Tree的构造方法,然后介绍Kd-Tree的搜索流程及代码实现,最后给出本人利用C#语言实现的二维KD树代码。这也是我自己动手实现的第一个树形的数据结构。理解上难免会有…

    好文分享 2025年12月17日
    000
  • C# 移除数组中重复数据

    #region 移除数组中重复数据 /// /// 移除数组中重复数据 /// /// 需要除重的数组 /// 不重复数组 public static string[] DelRepeatData(string[] array) { return array.GroupBy(p => p).S…

    好文分享 2025年12月17日
    000

发表回复

登录后才能评论
关注微信