import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param cowHeights int整型一维数组
     * @return int整型
     */
   public int visibleCows (int[] cowHeights) {
        int [] tempMax = new int[cowHeights.length];
        int max = cowHeights[0];
        tempMax[0] = max;
        int count = 0;
        for (int i = 1; i < cowHeights.length; i++) {
            if(cowHeights[i]>max){
                max = cowHeights[i];
            }
            tempMax[i] = max;
        }
        for (int i = 1; i < cowHeights.length; i++) {
            if(tempMax[i]<=cowHeights[i]&&tempMax[i]!=tempMax[i-1]){
                count++;
            }
        }
        return count+1;
    }
}

本题知识点分析:

1.数组遍历

2.贪心算法

3.数学模拟

本题解题思路分析:

1.第一个遍历获取每一个索引时刻的最大值

2.第二个遍历,如果当前索引时刻最大值小于等于当前值并且索引时刻最大值不产生第二次连续count++

3.返回count+1,因为i=1开始

4.最后发现貌似一次遍历就可以了,边更新Max,边用if判断不就好了.......

本题使用编程语言: Java