Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >试图在数组中查找序列长度的问题

试图在数组中查找序列长度的问题
EN

Stack Overflow用户
提问于 2016-10-10 11:10:23
回答 3查看 61关注 0票数 1

我试图在数组中找到序列的长度,在第一个和第二个特定数字之间。

例如:lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7)将返回5,因为在数字7的第一次出现和第二次出现之间有5个索引。

我觉得我编写的代码应该可以工作,但是在控制台日志记录之后,我的arr.push()方法似乎只将第一个索引推到了索引数组变量,并将它推了两次。为什么会发生这种事?

以下是我的上下文代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var lengthOfSequence = function (arr, n) {

  var indexes = [];

  for (var i = 0; i < arr.length; i++) {
    if (arr[i] === n) {
      indexes.push(arr.indexOf(arr[i]));
    }
  }

  return arr.indexOf(indexes[1]) - arr.indexOf(indexes[0]);

}

因此,例如,如果我使用我前面使用的lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7)数组,我的for循环将找到第一个出现的7(索引2),并将其推送到索引数组变量,但它只会执行两次。所以我的索引数组应该是[2,2]。为什么不是[2,6]

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-10 11:14:21

indexOf不像你想的那样做。它返回它用提供的值找到的第一个项的索引。对于数组中的两个值,它返回第一个索引。

由于您只需要索引,并且已经在使用循环迭代索引,所以只需使用i本身:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
indexes.push(i);
票数 2
EN

Stack Overflow用户

发布于 2016-10-10 11:45:59

你可以这样做,但不知道为什么是5,你想要。我想应该是4。好的,让我们把它定为5。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function lengthOfSequence(a,f){
  var fi = a.indexOf(f);
  return a.slice(fi)
          .indexOf(f)+(2*fi+1);
}

var a = [0, -3, 7, 4, 0, 3, 7, 9],
    f = 7;
console.log(lengthOfSequence(a,f));

票数 1
EN

Stack Overflow用户

发布于 2016-10-10 12:48:16

您可以只使用索引,并返回最后一个索引元素与第一个加一个索引元素之间的差异。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var lengthOfSequence = function(arr, n) {
    var indexes = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === n) {
          indexes.push(i);
        }
    }
    return indexes[indexes.length - 1] - indexes[0] + 1;
}

console.log(lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7));  // 5
console.log(lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], -3)); // 1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39965165

复制
相关文章
在排序数组中查找数字
思路: 2分查找数组中的第一个k: 1. 如果中间数字大于k,那么k只可能出现在前半段 2. 如果中间数字小于k,那么k只可能出现在后半段 3. 如果中间数字等于k: - 如果中间数字的前面不是k,那么中间数字恰好就是第一个k - 如果中间数字的前面是k,那么第一个k肯定在前半段
用户8639654
2021/07/23
3.7K0
面试算法:在未知长度的排序数组中进行快速查找
假设A是一个排好序的数组,但是它的长度,我们无法得知。如果我们访问的元素超出了数组长度,那么就会引发一次异常,请设计一个有效算法,输入数组A以及一个数值k,找到一个下标i,使得A[i] = k, 返回-1,如果数组A中不存在等于k的元素。 这道题跟我们以前处理的查找问题不同之处在于,数组A的长度无法确定。如果数组A长度确定的话,那么问题就退化为一个在排序数组中进行查找的问题,此时我们依靠二分查找法就能快速定位数组A是否包含给定元素。 问题在于,数组A长度无法提前确定,那么我们就不能直接使用二分查找,因为
望月从良
2018/07/19
5990
python 中如何查找列表长度
In this article, we will be unveiling techniques to find the length of a Python list. Finding the length actually means fetching the count of data elements in an iterable.
用户8418197
2022/01/09
2.7K0
<hashmap><双指针>最长子数组长度问题
给定一个无序数组arr,其中元素可正,可负,可0,给定一个整数k。求arr所有的子数组中累加和为k的最长子数组长度。
大学里的混子
2019/02/25
1.5K0
怎样在JavaScript中创建和填充任意长度的数组 [每日前端夜话0x29]
不过这并不是长久之计,比如当我们需要创建大型数组时。这篇博文探讨了在这种情况下应该怎么做。
疯狂的技术宅
2019/03/27
3.3K0
怎样在JavaScript中创建和填充任意长度的数组 [每日前端夜话0x29]
在未知长度的超大数组中线性时间内查找第k大的元素
给定一个长度为n的数组,n是一个很大的值,而且事先不知道n的大小,给定一个确定的数值k,要求设计一个找出数组中第k大的元素,要求算法需要的空间不能超过O(k)。
望月从良
2018/08/16
9290
在未知长度的超大数组中线性时间内查找第k大的元素
查找数组中重复的数字
        题目来源于《剑指Offer》中的面试题3:找出数组中重复的数字。   // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},   // 那么对应的输出是重复的数字2或者3。         解决方法有多种,包括数组排序,哈希表法,以及作者推荐的重排数组法。此处介绍自己的一个做法,以空间换
waylon
2018/03/08
4K0
Leetcode算法【34在排序数组中查找元素】
在之前ARTS打卡中,我每次都把算法、英文文档、技巧都写在一个文章里,这样对我的帮助是挺大的,但是可能给读者来说,一下子有这么多的输入,还是需要长时间的消化。
程序员小跃
2019/12/27
2.5K0
2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?
2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?
福大大架构师每日一题
2022/07/09
7110
2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?
子序列长度 🧩
有 N 个正整数组成的一个序列。给定一个整数sum,求长度最长的的连续子序列使它们的和等于sum,并返回此子序列的长度。如果没有满足要求的序列,则返回-1。
梦想橡皮擦
2023/03/14
9430
二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
用户3003813
2018/09/06
1.9K0
[剑指offer] 二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
尾尾部落
2018/09/04
2.1K0
[剑指offer] 二维数组中的查找
LeetCode89|在排序数组中查找数字I
这道题之前的用法竟然是使用键值对集合HashMap来做的,现在看有点大材小用吧,时间复杂度为O(n),空间复杂度为O(1)就可以了,这或许就是一点个人的思考吧,不同的时间做法就不一样了
码农王同学
2020/10/14
1.4K0
序列比对的长度限制
前几天做序列比对,试了MUCSLE和MAFFT,但是程序总是被kill。刚开始以为是序列格式不对,但是检查到最后发现是序列太长了。以前没注意过这些比对算法对长度的要求,此文记录一下。
Listenlii-生物信息知识分享
2020/05/29
3.9K0
二维数组中的查找
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
崩天的勾玉
2021/12/20
1.5K0
二维数组中的查找
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
MickyInvQ
2021/10/26
1.7K0
二维数组中的查找
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1946753
后端码匠
2021/08/18
1.7K0
有序数组中与任意数组查找不同的部分-二分查找
题目:在一串有序数组中,给出一串随机数组查找其中不同的部分 数组A:{2,3,5,8,9,11} 数组B:{9,8,2,10,1} 结果:10,1 import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; public class GetAllNotIncluded { // 利用二分查找查找与子串不
sr
2018/08/20
1.4K0
有序序列的查找
#include "stdio.h" #include #define MAX 100 using namespace std; int Binary_Search(const int* array, int n, int key) { int low = 1; int high = n; int mid; while (low <= high) { if (array[0] < array[1]) { mid
川川菜鸟
2021/10/18
2970
【每日一题】【leetcode】11. 数组-在排序数组中查找数字
题目 统计一个数字在排序数组中出现的次数。 难易程度:easy 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 限制: 0 <= 数组长度 <= 50000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof 著作权归
aneutron
2022/08/10
9780

相似问题

在python中查找序列长度的开销?

16

在Perl中查找数组的长度

40

在C中查找数组的长度

41

使用jquery试图在div中查找文本长度

21

从数组中查找数组的长度

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文