Rabbits in Forest

作者: gattonero | 来源:发表于2018-02-13 01:18 被阅读8次

    Rabbits in Forest

    问题

    森林中每个兔子都有自己的颜色,如果某些兔子说出与自己有相同颜色的兔子数量(不包括自己),那么如何根据这些数量计算最少有多少只兔子

    解决方案

    • 分析问题,如果每一个数量代表了一种颜色,那么只要判断这种数量至少有多少种颜色就可以了
    • 文章中给出的解法,是用数量作为数组下标,这里提供另一种基于有序数组的解法,空间复杂度会低一点
    class Solution {
        public int numRabbits(int[] answers) {
            if(answers.length==0)return 0;
                    
            java.util.Arrays.sort(answers);
            int pre=answers[0],cur = pre,sum=0;
            for(int i=1;i<=answers.length;i++){
                if(i==answers.length){
                    sum+=pre+1;
                }else{
                    if(answers[i]==pre){
                        if(--cur<0){
                            cur = answers[i];
                            sum+=pre+1;
                        }
                    }else{
                        sum+=pre+1;
                        cur = answers[i];
                    }
                    
                    pre = answers[i];
                }
            }
            return sum;
        }
    }
    
    • 注意作者提供的解法中有这么一段
    ans += Math.floorMod(-count[k], k+1) + count[k];
    

    这里可以看做 count[k]基于k+1的上界(不是术语,方便理解而已,比如2基于5的上界是5,12基于5的上界是15,Math.ceil求的是一个数基于1的上界等等)

    相关文章

      网友评论

        本文标题:Rabbits in Forest

        本文链接:https://www.haomeiwen.com/subject/sszdtftx.html