【问题标题】:finding min & max in an array with 3 increments在具有 3 个增量的数组中查找最小值和最大值
【发布时间】:2018-10-05 05:00:32
【问题描述】:

我需要使用 java 数组找到数据的每 3 个元素的最大值和最小值。

对于 double data[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14} ,每 3 个元素的最大值和最小值是多少?换句话说,{1,2,3}, {4, 5, 6}, {7, 8, 9} 等的最大值和最小值是多少。

我有以下方法,但没有得到正确的结果。

for (int i = 0; i < data.length; i+=3) {

        for (int r = i; r < i + 3 && r < data.length; r++) {

            if (data[r] < lowest) { lowest = data[r]; }
            if (data[r] > highest) { highest = data[r]; }

        }

        lowest = highest;
        highest = 0;

【问题讨论】:

  • 你得到了什么结果?
  • 你为什么要lowest = highest?您的意思是在将highest = 0 设置为同时重置最低和最高之后执行此操作吗?
  • 另外,数据是否保证被排序(就像你的例子一样)?

标签: java arrays for-loop max min


【解决方案1】:

这个怎么样?

int[] data = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
int processed = 0;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int i = 0; i < data.length; i++) {
    if (data[i] < min) {
        min = data[i];
    }
    if (data[i] > max) {
        max = data[i];
    }

    processed++;
    if (processed == 3) {
        System.out.println("Min is: " + min);
        System.out.println("Max is: " + max);
        System.out.println("--------");

        processed = 0;
        min = Integer.MAX_VALUE;
        max = Integer.MIN_VALUE;
    }
}

输出:

Min is: 1
Max is: 3
--------
Min is: 4
Max is: 6
--------
Min is: 7
Max is: 9
--------
Min is: 10
Max is: 12
--------

不清楚如何处理数字 13 和 14,因为它们不构成 3 的块,但我想你明白算法的概念。

【讨论】:

  • @GeorgeWang 也许会同意我的回答? :)
猜你喜欢
  • 2022-10-14
  • 2019-02-24
  • 2018-05-03
  • 2021-09-15
  • 1970-01-01
  • 2017-08-18
  • 2016-06-06
  • 1970-01-01
相关资源
最近更新 更多