首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查找某个元素在数组中对应的索引

1 问题 已知一个数组内元素为 { 19, 28, 37, 46, 50 } 。用户输入一个数据,查找该数据在数组中的索引,并在控制台输出找到的索引值,如果没有查找到,则输出 -1。...2 方法 首先定义一个数组,在键盘录入要查找的数据,用一个变量接收。再定义一个变量,初始值为-1。遍历数组获取数组中的每一个元素。...然后将键盘输入的数据和数组中的每一个元素进行比较,如果值相同就把该值对应的索引赋值给索引变量,并结束循环。最后输8出索引变量。...; }else{ System.out.println("您输入的数字" + a + "在数组中的索引是:" + dataIndex); } }...if(a == arr[i]){ return i; } } return -1; } } 3 结语 针对查找某个元素再数组中对应的索引这个问题

3.2K10

JavaScript算法题:查找数字在数组中的索引

我们必须对数字数组进行升序排序,并找出给定数字在该数组中的位置。 算法说明 将值(第二个参数)插入到数组(第一个参数)中,并返回其在排序后的数组中的最低索引。返回的值应该是一个数字。...解决方案#1:`.sort()`,. indexOf`()` PEDAC 理解问题:有两个输入:一个数组和一个数字。我们的目标是将输入的数字在输入数组后中排序后,再返回它的索引。...示例/测试用例:我们不知道输入的数组是以哪种方式排序的,但是提供的测试用例清楚地表明,输入的数组应该从小到大进行排序。 请注意,在最后一个测试用例中存在边界问题,其中输入数组是一个空数组。...我们的目标是将输入的数字在输入数组后中排序后,再返回它的索引。 示例/测试用例:我们不知道输入的数组是以哪种方式排序的,但是提供的测试用例清楚地表明,输入的数组应该从小到大进行排序。...这个解决方案需要考虑两个边界情况: 如果输入数组为空,则我们需要返回 0,因为 num 将是该数组中的唯一元素,所以它在索引为 0 的位置。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二分法查找有序数组中对应数据的索引

    1 问题 在有序(升序或降序)的数组中查找对应数据的索引时,通常采取循环暴力求解:遍历数组中全部数据,直到数据等于目标值时,返回目标值的索引。但是,当数组中的数据足够多时,暴力求解会占用大量的时间。...那么,该如何减少查找过程中所花费的时间呢?...2 方法 可以通过“二分法”减少查找过程中所花费的时间,二分法其数学解释为:对于区间[a,b]上连续不断且f(a)*f(b)的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点...:35613用时:0.0002653999999893131s''' 3 结语 在有序(升序或降序)的数组中查找对应数据的索引,当数组中的数据过多时,可以使用“二分法”优化查找所花费的时间。...经过测试,使用time()模块统计程序运行时所花费的时间后,发现使用“二分法”查找比暴力查找快了3500倍之多,证明该方法是有效的。

    17410

    随机化在计算机中的应用:信息(索引)查找、信息加密【

    引言 哈希表:本质是通过随机化,把一个比较大的、稀疏的空间,映射到一个比较小的、紧密的空间中。在计算机中,它通常是通过数组实现的。...对索引进行查询的演变: 将关键词变成一个编号,通过数学变换,把每一个中国人的名字都可以对应一个数字。将来查找时,只要用公式做一次计算,就能直接找到名字在索引中的位置。...在计算机中,它通常是通过数组实现的。 相比一般的数组,它有三个优点: 动态增加或者删除一个数据项比较快。...将来查找时,只要用公式做一次计算,就能直接找到名字在索引中的位置。 假如汉字有3万个,每个汉字就对应了一个从0~29999的数字。...类似地,每一个中国人的名字都可以对应一个数字。 建立索引时,直接把“张楠”存放到第105,004,003个存储单元,将来查找时,只要用上面的公式做一次计算,就能直接找到“张楠”在索引中的位置。

    18930

    Python Numpy聚合运算利器

    在Numpy中,np.min() 是一种常用的聚合函数,它可以用于一维数组、多维数组,甚至是指定轴上的最小值查找。...Numpy中的 max 函数 max 函数用于找到数组中的最大值。在Numpy中,np.max() 是一种常用的聚合函数,适用于一维数组、多维数组,以及指定轴上的最大值查找。...Numpy中的 argmin 与 argmax 函数 argmin 和 argmax 函数分别用于查找数组中最小值和最大值的索引位置。这些函数在需要获取极值位置而不是具体数值时非常有用。...使用 np.argmin() 查找最小值的索引 np.argmin() 函数返回数组中最小值的索引位置。...在多维数组中使用 np.argmin() 与 np.argmax() np.argmin() 和 np.argmax() 同样适用于多维数组,但它们返回的是展平数组中的索引。

    13810

    【二分算法】——8个题目让你找到二分算法的感觉势如破竹

    如果中间元素等于目标值,则返回该索引;若中间元素小于目标值,则在右侧继续搜索;若中间元素大于目标值,则在左侧继续搜索。时间复杂度为O(log n)。...如果数组中存在目标值,返回其索引;若不存在,返回其应该插入的位置。使用二分查找,找到第一个大于或等于目标值的位置。 步骤: 初始化: 使用 left 和 right 指针。...可以使用二分查找的变种。每次选择中点,如果中点比其右侧元素小,则峰值在右侧;如果中点比其右侧元素大,则峰值在左侧。这样逐步缩小搜索范围,直至找到峰值。...left = mid + 1; } // 返回最终找到的峰值索引 return left; } }; 7.寻找旋转排序数组中的最小值...最小值通常出现在这两个有序子数组的交界处。可以使用二分查找,比较中点和右端点的值,若中点大于右端点,最小值在右侧;若中点小于右端点,最小值在左侧。

    34810

    Leetcode No.33 搜索旋转排序数组(二分法)

    请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。...: 输入:nums = [1], target = 0 输出:-1 提示: 1 <= nums.length <= 5000 -10^4 <= nums[i] <= 10^4 nums 中的每个值都...我们考虑数组中的最后一个元素 x:在最小值右侧的元素(不包括最后一个元素本身),它们的值一定都严格小于 x;而在最小值左侧的元素,它们的值一定都严格大于 x。...小于nums[high]时,说明mid->high右侧是有序的,判断target是否在右侧,否则往左侧递归查找 4、当nums[mid]大于nums[high]时,说明low->mid左侧是有序的,判断...target是否在左侧,否则往右侧递归查找 5、当low>high时,表示没有找到,返回-1 三、代码 class Solution { public int search(int[] nums

    17920

    备战蓝桥杯————二分查找(二)

    引言         在上一篇博客中,我们深入探讨了二分搜索算法及其在寻找数组左侧边界的应用。二分搜索作为一种高效的查找方法,其核心思想在于通过不断缩小搜索范围来定位目标值。...在本文中,我们将继续这一主题,不仅会回顾二分搜索的基本原理,还将重点介绍如何利用这一算法来寻找数组中目标值的右侧边界。通过对比左侧和右侧边界的搜索,我们将揭示二分搜索算法的灵活性和强大功能。...无论您是在准备技术面试,还是在日常编程中寻求效率提升,本文都将为您提供宝贵的洞见。 一、寻找右侧边界的二分查找         在有序数组中寻找特定值的右侧边界是二分查找算法的一个重要变体。...该方法返回一个包含两个元素的数组,第一个元素是目标值的最小索引(左侧边界),第二个元素是最大索引(右侧边界)。如果目标值不存在于数组中,则两个元素都为 -1。 以下是该方法的思路: 1....返回结果: 返回包含左侧和右侧边界索引的数组arr。 这种方法确保了即使在目标值在数组中多次出现的情况下,也能正确地找到其首次和最后一次出现的索引。

    12610

    面试算法:在循环排序数组中快速查找第k小的值d

    ,假定数组所有元素都不相同,请你给出一个复杂度为O(lgn)的算法,查找出第k小的元素。...解答这道题的关键是要找到数组中的最小值,由于最小值不一定在开头,如果它在数组中间的话,那么它一定具备这样的性质,假设第i个元素是最小值,那么有A[i-1]>A[i] A[n-1],那么我们可以确定最小值在m的右边,于是在m 和 end之间做折半查找。...如果A[m] 在m的左边,于是我们在begin 和 m 之间折半查找,如此我们可以快速定位最小值点。...这种查找方法使得我们能够在lg(n)时间内查找到最小值。 当找到最小值后,我们就很容易查找第k小的元素,如果k比最小值之后的元素个数小的,那么我们可以在从最小值开始的数组部分查找第k小的元素。

    3.2K10

    聊一聊二分查找法

    本文就与小伙伴们一起探讨几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。 并对里面的实现细节做一个仔细的分析。...寻找一个数(最基本的二分查找法) 这个场景是最简单的场景,也是大家最熟悉的入门算法,即在数组中搜索一个指定的数字,如果存在返回索引,如果不存在返回-1....那么什么时候算是没有找到这个数字呢,一共有两种情况,一种情况是目标数字大于数组中的每个数字,这种情况下,left=right=nums.length。...另一种情况是目标数字小于数组中的每个数字,也就是left=right=0,而且nums[0]!=target。...总结 至此,几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界,王子与大家就讨论完毕了。 通过本文,小伙伴们应该对于二分查找法的细节有了更深一步的了解。

    53920

    面试算法,在绝对值排序数组中快速查找满足条件的元素配对

    对于这个题目,我们曾经讨论过当数组元素全是整数时的情况,要找到满足条件的配对(i,j),我们让i从0开始,然后计算m = k - A[i],接着在(i+1, n)这部分元素中,使用折半查找,看看有没有元素正好等于...m,如果在(i+1,n)中存在下标j,满足A[j] == m 那么我们就可以直接返回配对(i,j),这种做法在数组元素全是正数,全是负数,以及是绝对值排序时都成立,只是在绝对值排序的数组中,进行二分查找时...因此在查找满足条件的元素配对时,我们先看看前两种情况是否能查找到满足条件的元素,如果不行,那么我们再依据第三种情况去查找,无论是否存在满足条件的元素配对,我们算法的时间复杂度都是O(n)。..." and " + this.sortedArray[this.indexJ]); } } } 类FindPairInAbsoluteSortedArray用于在绝对值排序的数组中查找满足条件的元素配对...,它先根据两元素都是正数的情况下查找,然后再根据两元素都是负数的情况下查找,如果这两种情况都找不到,再尝试两元素一正一负的情况下查找,如果三种情况都找不到满足条件的元素,那么这样的元素在数组中不存在。

    4.3K10

    (转载非原创)编程思想与算法leetcode_二分算法详解

    二分算法通常用于有序序列中查找元素: 有序序列中是否存在满足某条件的元素; 有序序列中第一个满足某条件的元素的位置; 有序序列中最后一个满足某条件的元素的位置。...但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,这样的话此算法是无法处理的。 这样的需求很常见。...但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,这样的话此算法是无法处理的。 这样的需求很常见。...h,在区间 [l, m) 中继续搜索,即不断向左收缩,达到锁定左侧边界的目的。...= m ​ 因为我们需找到 target 的最左侧索引 所以当 nums[m] == target 时不要立即返回 而要收紧右侧边界以锁定左侧边界 第三个,寻找右侧边界的二分查找: 因为我们初始化 h

    36920

    【算法】递归算法 ② ( 使用递归实现二分法 | if else 编码优化 )

    : 从一个 有序数组 中查找某个 目标值 , 返回 该目标元素在数组中的索引值 , 如果 数组中没有该 目标值 , 则返回 -1 ; 如 : 从 [1 , 2 , 4 , 5 , 6] 中查找 目标值...2 , 返回 2 对应的数组元素索引 为 1 ; 如果从上述数组中查找 3 , 数组中没有该元素 , 则返回 -1 ; 使用 递归 实现 二分法 , 目的是 不断 缩小二分区间 , 每次 进行递归的操作..., 数组集合 , 查找元素的区间范围 , 起始索引 和 终止索引 , 这是 2 个参数 , 进行对比的目标值 返回值分析 : 返回值就是 获取的 目标值 在数组中的索引 ; 递归拆解 :...中心元素 = 目标值 , 直接返回该索引值 ; - 如果 中心元素 查找区间的 右侧继续查找 ; - 如果 中心元素 > 目标值 , 则需要去 该查找区间的 左侧继续查找...: 在代码中 , 使用的 else 越多 , 代码的 可读性越差 ; 如果要使用 if else 语句 , 推荐将这个逻辑单独封装到一个函数中 , 在函数内部 使用 if return 来替代 if

    64420

    leetcode刷题(86)——739.二分查找

    nums 的每个元素都将在 [-9999, 9999]之间。 二分查找真正的坑根本就不是那个细节问题,而是在于到底要给 mid 加一还是减一,while 里到底用 的二分查找中,区别是:前者相当于两端都闭区间 [left, right],后者相当于左闭右开区间 [left, right),因为索引大小为 nums.length 是越界的。...但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,这样的话此算法是无法处理的。...寻找右侧边界的二分查找 类似寻找左侧边界的算法,这里也会提供两种写法,还是先写常见的左闭右开的写法,只有两处和搜索左侧边界不同,已标注: int right_bound(int[] nums, int...所以当 nums[mid] == target 时不要立即返回 而要收紧右侧边界以锁定左侧边界 第三个,寻找右侧边界的二分查找: 因为我们初始化 right = nums.length 所以决定了我们的

    20520

    这些评论有点意思。

    首先给没有见过这道题目的小伙伴补充一下前置知识,这道题目讲的是: 一个长度为 n - 1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 ~ n - 1 之内。...在范围 0 ~ n - 1 内的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。 比如数组为 [0,1,2,3,4,5,6,7,9],注意到 8 不在里面,因此输出 8 。...很明显,遍历的方式没有用到题目给出的所有条件: 所有数字都是唯一的 每个数字都在范围 0 ~ n - 1 之内 有且只有一个数字不在该数组中 这里给大家一个小技巧,但凡看到数组、搜索相关的词语,第一想法可以去尝试二分法...而如果发现有数字没有出现在正确的位置上,也就是发生了错位,比如数字 9 出现在索引位置为 8 的地方,那么由于有且只有一个数字不在该数组中,那么很明显数字 10 出现在索引位置为 9 的地方、数字 11...// 当前区间的左侧为 left,右侧 right = mid - 1 right = mid - 1; } }

    19050

    刷到 LeetCode 这个评论,我沉默了!

    首先给没有见过这道题目的小伙伴补充一下前置知识,这道题目讲的是: 一个长度为 n - 1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 ~ n - 1 之内。...在范围 0 ~ n - 1 内的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。 比如数组为 [0,1,2,3,4,5,6,7,9],注意到 8 不在里面,因此输出 8 。...很明显,遍历的方式没有用到题目给出的所有条件: 所有数字都是唯一的 每个数字都在范围 0 ~ n - 1 之内 有且只有一个数字不在该数组中 这里给大家一个小技巧,但凡看到数组、搜索相关的词语,第一想法可以去尝试二分法...而如果发现有数字没有出现在正确的位置上,也就是发生了错位,比如数字 9 出现在索引位置为 8 的地方,那么由于有且只有一个数字不在该数组中,那么很明显数字 10 出现在索引位置为 9 的地方、数字 11...// 当前区间的左侧为 left,右侧 right = mid - 1 right = mid - 1; } }

    44540

    二分查找算法详解

    阿东正准备把每一本书在报警器下过一下,以找出引发警报的书,但是保安露出不屑的眼神:你连二分查找都不会吗?...这二者可能出现在不同功能的二分查找中,区别是:前者相当于两端都闭区间 [left, right],后者相当于左闭右开区间 [left, right),因为索引大小为 nums.length 是越界的。...比如说给你有序数组 nums = [1,2,2,2,3],target = 2,此算法返回的索引是 2,没错。...但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,这样的话此算法是无法处理的。 这样的需求很常见。...如果 nums 中不存在 target 这个值,怎么办? 答:因为要一步一步来,先理解一下这个「左侧边界」有什么特殊含义: ? 对于这个数组,算法会返回 1。

    1K41

    二分查找算法细节详解

    本文以问答的形式,探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。第一个场景是最简单的算法形式,解决 这道题,后两个场景就是本题。...这二者可能出现在不同功能的二分查找中,区别是:前者相当于两端都闭区间 [left, right],后者相当于左闭右开区间 [left, right),因为索引大小为 nums.length 是越界的。...但是如果我想得到 target 的左侧边界,即索引 1 2,或者我想得到 target 的右侧边界,即索引 3 3,这样的话此算法是无法处理的。 这样的需求很常见。...如果 nums 中不存在 target 这个值,怎么办? 答:因为要一步一步来,先理解一下这个「左侧边界」有什么特殊含义: ? 对于这个数组,算法会返回 1。...而是缩小「搜索区间」的上界 right,在区间 [left, mid)中继续搜索,即不断向左收缩,达到锁定左侧边界的目的。

    85220
    领券