查找大于当前数字的最接近数字的索引

Shreyas Shetty

对于正整数数组中的每个整数,请找到大于当前整数的最接近整数的索引。同样,我们只需要在当前整数的左侧搜索答案。

例如 -

Input array - [ 5, 4, 3, 6, 2, 3]
Output array - [ -1, 0, 1, -1, 3, 3]

给没有答案的数字指定-1。

有一个简单的O(n ^ 2)方法,对于每个数字,从前一个数字到数组的开头运行一个for循环。

for(int i=0; i<n; ++i)
{
    output[i] = -1;
    for(int j=i-1; j>=0; --j)
    {
        if(input[j] > input[i])
        {
            output[i] = j;
            break;
        }
    }
}

当“ n”较大时,此方法效率不高。有没有更有效的方法?

吉拉德·巴坎(Gilad Barkan)

我相信一种流行的O(n)解决方案是使用堆栈,并保持降序排列(希望该算法从注释的代码中足够清楚):

function f(A){
  let stack = []
  let output = []

  for (let i=0; i<A.length; i++){
    // While there are lower or
    // equal elements on top of
    // the stack
    while (stack.length && A[ stack[stack.length-1] ] <= A[i])
      stack.pop();
    
    // The next greater element
    // to the left
    if (stack.length)
      output.push(stack[stack.length-1]);
    // There was none
    else
      output.push(-1);

    stack.push(i);
  }

  return output;
}

var As = [
  [5, 4, 3, 6, 2, 3],
  [1, 2, 3, 4, 5],
  [5, 4, 3, 2, 1],
  [0, 3, -1, 5, 4]
];

for (let A of As){
  console.log(`${ A }`);
  console.log(`${ f(A) }`);
  console.log('');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找最接近0的数字

来自分类Dev

数组中最接近x的数字的索引,该数字不能大于x

来自分类Dev

从向量中找到最接近的数字索引

来自分类Dev

在单元格中查找大于特定值的最接近数字

来自分类Dev

查找与数字中最接近的因子

来自分类Dev

查找最接近列表目标和的数字

来自分类Dev

在字典中查找数字的最接近的下键

来自分类Dev

查找与给定数字最接近的k个数字

来自分类Dev

查找与给定数字最接近的数字总和

来自分类Dev

查找最接近特定数字的数字总和

来自分类Dev

查找具有多个匹配条件的最接近的数字索引+匹配+最小+绝对值

来自分类Dev

从 Python 中排序的数组中最接近的数字返回索引

来自分类Dev

从两个数组列表中查找最接近的数字

来自分类Dev

在两个数组中查找最接近的数字

来自分类Dev

在整数数组中查找最接近的数字

来自分类Dev

查找数组中最接近的较高和较低的数字

来自分类Dev

在两个数组中查找最接近的数字

来自分类Dev

从两个数组列表中查找最接近的数字

来自分类Dev

SQL:通过关系查找最接近给定值的数字

来自分类Dev

在圆形数组中查找最接近的数字

来自分类Dev

MySQL - 在数字范围内查找最接近的匹配

来自分类Dev

排序最接近给定数字的数字

来自分类Dev

在数字列表中查找数字对最接近的匹配项的算法

来自分类Dev

查找排序向量中最接近的索引

来自分类Dev

查找最接近给定值的索引

来自分类Dev

我有一个数字,我想获得小于jquery数组内的最接近的数字和大于大于jquery数组内的最接近的数字的一个

来自分类Dev

批量获取最接近完美平方的数字

来自分类Dev

从数组获取数字的最接近值

来自分类Dev

获取数组中最接近的数字

Related 相关文章

  1. 1

    查找最接近0的数字

  2. 2

    数组中最接近x的数字的索引,该数字不能大于x

  3. 3

    从向量中找到最接近的数字索引

  4. 4

    在单元格中查找大于特定值的最接近数字

  5. 5

    查找与数字中最接近的因子

  6. 6

    查找最接近列表目标和的数字

  7. 7

    在字典中查找数字的最接近的下键

  8. 8

    查找与给定数字最接近的k个数字

  9. 9

    查找与给定数字最接近的数字总和

  10. 10

    查找最接近特定数字的数字总和

  11. 11

    查找具有多个匹配条件的最接近的数字索引+匹配+最小+绝对值

  12. 12

    从 Python 中排序的数组中最接近的数字返回索引

  13. 13

    从两个数组列表中查找最接近的数字

  14. 14

    在两个数组中查找最接近的数字

  15. 15

    在整数数组中查找最接近的数字

  16. 16

    查找数组中最接近的较高和较低的数字

  17. 17

    在两个数组中查找最接近的数字

  18. 18

    从两个数组列表中查找最接近的数字

  19. 19

    SQL:通过关系查找最接近给定值的数字

  20. 20

    在圆形数组中查找最接近的数字

  21. 21

    MySQL - 在数字范围内查找最接近的匹配

  22. 22

    排序最接近给定数字的数字

  23. 23

    在数字列表中查找数字对最接近的匹配项的算法

  24. 24

    查找排序向量中最接近的索引

  25. 25

    查找最接近给定值的索引

  26. 26

    我有一个数字,我想获得小于jquery数组内的最接近的数字和大于大于jquery数组内的最接近的数字的一个

  27. 27

    批量获取最接近完美平方的数字

  28. 28

    从数组获取数字的最接近值

  29. 29

    获取数组中最接近的数字

热门标签

归档