题解 | #寻找最合适的生育区域#
寻找最合适的生育区域
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题目,