题解 | #寻找最合适的生育区域#
寻找最合适的生育区域
https://www.nowcoder.com/practice/c183c254a5c94b9da341fb27fb3caf99
考察知识点:遍历,窗口滑动
题目解析:
在给出来的区域内,寻找左区间-右区间高度差不超过 k的区域,注意的是,左区间与右区间可以不连续,可以存在别的数值在期间,详细的解析在代码注释里
采用的编程语言:C
完整的编程滴代码:如下所以
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param heights int整型一维数组
* @param heightsLen int heights数组长度
* @param k int整型
* @return int整型
*/
int findMaxRangeWithinThreshold(int* heights, int heightsLen, int k ) {
int sub_val = 0;
int left_num = 0, right_num = 0;
int count = 0;
/* 当left_num或者right_num超出了数组的取值范围,就判定已经完成了整个数组的遍历 */
while ((right_num < heightsLen) && (left_num < heightsLen)) {
/* 获取前后两个值的差值 */
if (heights[left_num] < heights[right_num])
sub_val = heights[right_num] - heights[left_num];
else
sub_val = heights[left_num] - heights[right_num];
/* 更新窗口边界 */
if (sub_val <= k)
right_num++;
else
left_num++;
/* 只获取窗口最大的值 */
if ((right_num - left_num) > count)
count = right_num - left_num;
}
return count;
}
面试高频TOP202解析 文章被收录于专栏
采用Java,C,Python等方法去解答面试高频TOP202题目,