大家好,我是开车的阿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; } };