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