题解 | #牛群的可视高度#
牛群的可视高度
https://www.nowcoder.com/practice/942d0585a5654dbb9d5000feaa4e177e
大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
贪心算法
题目解答方法的文字分析
这道题目仍然可以使用贪心算法来解决。我们可以从左向右遍历牛群的高度,同时维护一个变量maxHeight表示从当前位置向左看到的最高牛的高度。在遍历过程中,如果当前牛的高度大于等于maxHeight,说明我们可以看到这头牛,将结果加一,并更新maxHeight为当前牛的高度。
具体步骤如下:
- 初始化结果visible为0,以及最高牛的高度maxHeight为0。
- 从数组的第一个元素开始向后遍历。
- 如果当前牛的高度大于等于maxHeight,说明我们可以看到这头牛,将结果visible加一,并更新maxHeight为当前牛的高度。
- 继续向后遍历,直到最后一个牛的高度。
本题解析所用的编程语言
C++
完整且正确的编程代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cowHeights int整型vector
* @return int整型
*/
int visibleCows(vector<int>& cowHeights) {
int n = cowHeights.size();
int visible = 0;
int maxHeight = 0; // 从当前位置向左看到的最高牛的高度
for (int i = 0; i < n; ++i) {
if (cowHeights[i] > maxHeight) {
visible++; // 可以看到这头牛
maxHeight = cowHeights[i]; // 更新最高牛的高度
}
}
return visible;
}
};
阿Q的题解 文章被收录于专栏
阿Q秋招刷过的题



