2011-05-09 22 views
0

我们拥有一组高度,代表沿着步道的高度。给出数组中的开始/结束索引,返回从开始索引开始到结束索引结束散步的“大”步数。如果上升或下降5个或更多,我们会说这一步很大。开始和结束索引都是数组中的有效索引,开始时为< = end。找到沿着步道的“大步”

bigHeights({5, 3, 6, 7, 2}, 2, 4) → 1  
bigHeights({5, 3, 6, 7, 2}, 0, 1) → 0  
bigHeights({5, 3, 6, 7, 2}, 0, 4) → 1  

林坚持了这个问题,并无法进行进一步 函数签名是如下::
public int bigHeights(int[] heights, int start, int end){ }

+1

好像功课 – Manoj 2011-05-09 12:08:43

回答

1

您需要的策略很简单:你只需要检查每个相邻的一对数字并计算“大”步骤的数量。

所以,你需要做的是:

  • 从一开始指数初始化一个计数器清零
  • 循环到一个小于结束索引
  • 在每一步高度比较[我]与高度[I + 1],并且如果差为5以上递增计数器
  • 返回计数器的最终值

ħ opefully,给你足够的提示来解决问题....

0

你必须要经过heights阵列,计算的差的绝对值,并计算:

public int bigHeights(int[] heights, int start, int end){ 
    int bigsteps = 0; 
    for (int i = start + 1; i <= end; i++) { 
     if (Math.abs(heights[i] - heights[i - 1]) >= 5) 
      bigsteps++; 
    } 
    return bigsteps; 
}