题解 | #乳牛研究成果评估#

乳牛研究成果评估

https://www.nowcoder.com/practice/00e2e90dd8a24e1695cee8c3cb339390

知识点:贪心 排序

思路:直接暴力肯定可以解决,复杂度o(n2)

从头开始寻找,假设是最大值,n=数组长度,当遇到不满足n就-1,这时肯定会想到需要一个m记录满足的个数

但是因为数组无序,m记录的是n=?的个数不知,很简单一个方法就是数组排序,逆序

这时,n记录的一定是之前都满足的,并且当n和m重合的时候就是最大值,因为下一个数字比当前的小

比如 5 4 4 3 ,当到3的时候,n=3 m=4,上一步是n=4.m=3,其在4和3之间重合

这样时间复杂度就是2o(n),等于o(n)

编程语言:java

如果我的思路启发了你,给个小小关注吧~

我是废江,一个从java跑到内核再准备润回java的打工人,我会持续分享从linux内核到上层java微服务等干货

import java.util.*;
import java.util.Arrays;
import java.util.Collections;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param milk_production int整型一维数组
     * @return int整型
     */
    public int cow_hp (int[] milk_production) {
        // write code here
        Integer[] reversed_milk = Arrays.stream(milk_production)
                                  .boxed()
                                  .sorted(Collections.reverseOrder())
                                  .toArray(Integer[]::new);
        int i;
        for (i = 0; i < reversed_milk.length; i++) {
            //当n>m的时候,就是最大值,再往下n只会越小
            if (reversed_milk[i] < i + 1)
                break;
        }
        return i;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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