找到步行道上的“大步”数

时间:2011-05-09 12:06:10

标签: java

我们有一系列高度,代表沿着步道的高度。给定数组中的开始/结束索引,返回从开始索引开始到结束索引结束的步行的“大”步数。我们会说,如果它上升或下降5或更多,那么步骤很大。 start和end索引都是start< = 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){ }

2 个答案:

答案 0 :(得分:1)

您需要的策略非常简单:您只需要检查每对相邻的数字并计算“大”步数。

所以你需要做的是:

  • 将计数器初始化为零
  • 从起始索引循环到小于结束索引的一个
  • 在每个步骤高度[i]与高度[i + 1]进行比较,如果差值为5或更多,则计数器
  • 返回计数器的最终值

希望这能给你足够的提示来解决问题....

答案 1 :(得分: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;
}