大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

贪心算法

题目解答方法的文字分析

这道题目仍然可以使用贪心算法来解决。我们可以从左向右遍历牛群的高度,同时维护一个变量maxHeight表示从当前位置向左看到的最高牛的高度。在遍历过程中,如果当前牛的高度大于等于maxHeight,说明我们可以看到这头牛,将结果加一,并更新maxHeight为当前牛的高度。

具体步骤如下:

  1. 初始化结果visible为0,以及最高牛的高度maxHeight为0。
  2. 从数组的第一个元素开始向后遍历。
  3. 如果当前牛的高度大于等于maxHeight,说明我们可以看到这头牛,将结果visible加一,并更新maxHeight为当前牛的高度。
  4. 继续向后遍历,直到最后一个牛的高度。

本题解析所用的编程语言

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!