题解 | #寻找最合适的生育区域#

寻找最合适的生育区域

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题目,

全部评论

相关推荐

我就是0offer糕手:北大不乱杀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务