查找给定数组中每个窗口大小的最小值

时间:2017-11-10 00:14:07

标签: arrays algorithm

我无法理解下面给出的例子。 给定大小为n的整数数组,找到数组中每个窗口大小(连续子阵列的长度)的最小值。请注意,窗口大小从1到n不等。

Input:  arr[] = {10, 20, 30, 50, 10, 70, 30}
Output:         70, 30, 20, 10, 10, 10, 10

输出中的第一个元素表示所有的最小值 窗户大小为1。 大小为1的窗口最小值为{10},{20},{30},{50},{10}, {70}和{30}。这些最小值的最大值为70

输出中的第二个元素表示所有的最小值 2号窗户。 大小为2的窗口最小值为{10},{20},{30},{10},{10}, 和{30}。这些最小值的最大值为30

我的问题是:为什么2号窗口的最小值为{10},{20},{30},{10},{10}和{30}? 2号窗户不应该添加1号窗户吗?

1 个答案:

答案 0 :(得分:1)

A"窗口"是数组中连续元素的序列。大小为1的Windows只是单个数组元素。大小为2的Windows是连续的对:

{10, 20}
     {20, 30}
         {30, 50}
             {50, 10}
                 {10, 70}
                     {70, 30}

相应的最小值为10,20,30,10,10,30。最大值为30。

当我们达到3号时......

Window        min
10, 20, 30     10
20, 30, 50     20
30, 50, 10     10
50, 10, 70     10
10, 70, 30     10
           max 20

看看它是如何工作的?