题解 | #乳牛研究成果评估#
乳牛研究成果评估
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; } }