All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0701_0800.s0781_rabbits_in_forest.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0701_0800.s0781_rabbits_in_forest;

// #Medium #Array #Hash_Table #Math #Greedy #2022_03_26_Time_1_ms_(99.15%)_Space_41.4_MB_(92.53%)

/**
 * 781 - Rabbits in Forest\.
 *
 * Medium
 *
 * There is a forest with an unknown number of rabbits. We asked n rabbits **"How many rabbits have the same color as you?"** and collected the answers in an integer array `answers` where `answers[i]` is the answer of the ith rabbit.
 *
 * Given the array `answers`, return _the minimum number of rabbits that could be in the forest_.
 *
 * **Example 1:**
 *
 * **Input:** answers = [1,1,2]
 *
 * **Output:** 5
 *
 * **Explanation:**
 *
 *     The two rabbits that answered "1" could both be the same color, say red.
 *     The rabbit that answered "2" can't be red or the answers would be inconsistent.
 *     Say the rabbit that answered "2" was blue.
 *     Then there should be 2 other blue rabbits in the forest that didn't answer into the array.
 *     The smallest possible number of rabbits in the forest is therefore 5: 3 that answered plus 2 that didn't. 
 *
 * **Example 2:**
 *
 * **Input:** answers = [10,10,10]
 *
 * **Output:** 11 
 *
 * **Constraints:**
 *
 * *   `1 <= answers.length <= 1000`
 * *   `0 <= answers[i] < 1000`
**/
public class Solution {
    public int numRabbits(int[] answers) {
        int[] counts = new int[1001];
        for (int element : answers) {
            counts[element]++;
        }
        int answer = counts[0];
        for (int i = 1; i <= 1000; i++) {
            if (counts[i] > 0) {
                int rabbitsInPartialGroup = counts[i] % (i + 1);
                int rabbitsInCompleteGroups = counts[i] - rabbitsInPartialGroup;
                answer += rabbitsInCompleteGroups;
                if (rabbitsInPartialGroup > 0) {
                    answer += (i + 1);
                }
            }
        }
        return answer;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy