【问题标题】:Finding the largest subscript of an array in a unssorted and repetitive array在未排序且重复的数组中查找数组的最大下标
【发布时间】:2015-07-01 14:01:02
【问题描述】:

我有一个未排序且重复的数组,例如 {1,1,2,2,3,3,5,5,4,4,4} ,我想找到数组中的最大数字及其最大位置.例如5重复两次,我想获得第二个5的位置。我应该如何处理。我尝试以相反的方式对数组进行排序并检查下一个数字并找到它的位置。这可以更快地完成吗?有什么线索吗?

【问题讨论】:

  • 定义subscript。告诉我们你做了什么。
  • 顺便说一下,反向排序是浪费时间,因为它已经按升序排序了。只需从最后迭代。
  • 它没有排序(甚至在你的例子中也没有)。如果它被排序,那么答案就是数组的最后一个索引。
  • 我现在已经编辑了问题。它是一个未排序的数组
  • 对数组进行排序会弄乱你的问题集。下面的 shorner102 有答案

标签: java algorithm sorting array-algorithms


【解决方案1】:

假设 arr 是您的数字数组,此代码返回最大位置处的最大数字。

int maxPosition = 0;
        for(int i = 1; i < arr.length; i++)
        {
            if(arr[maxPosition] <= arr[i])
                maxPosition = i;
        }
        return maxPosition;

【讨论】:

    【解决方案2】:

    如果你可以使用 java 8 这应该可以工作:

    List<Integer> numbers = Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 6, 5, 5, 4, 4, 5);
    int lastIndexOf = numbers.lastIndexOf(numbers.stream().max((x1, x2) -> x1 - x2).get());
    

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 2014-10-19
      相关资源
      最近更新 更多