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

g2701_2800.s2784_check_if_array_is_good.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g2701_2800.s2784_check_if_array_is_good;

// #Easy #Array #Hash_Table #Sorting #2023_09_21_Time_1_ms_(99.49%)_Space_41.2_MB_(98.36%)

/**
 * 2784 - Check if Array is Good\.
 *
 * Easy
 *
 * You are given an integer array `nums`. We consider an array **good** if it is a permutation of an array `base[n]`.
 *
 * `base[n] = [1, 2, ..., n - 1, n, n]` (in other words, it is an array of length `n + 1` which contains `1` to `n - 1` exactly once, plus two occurrences of `n`). For example, `base[1] = [1, 1]` and `base[3] = [1, 2, 3, 3]`.
 *
 * Return `true` _if the given array is good, otherwise return_ `false`.
 *
 * **Note:** A permutation of integers represents an arrangement of these numbers.
 *
 * **Example 1:**
 *
 * **Input:** nums = [2, 1, 3]
 *
 * **Output:** false
 *
 * **Explanation:** Since the maximum element of the array is 3, the only candidate n for which this array could be a permutation of base[n], is n = 3. However, base[3] has four elements but array nums has three. Therefore, it can not be a permutation of base[3] = [1, 2, 3, 3]. So the answer is false. 
 *
 * **Example 2:**
 *
 * **Input:** nums = [1, 3, 3, 2]
 *
 * **Output:** true
 *
 * **Explanation:** Since the maximum element of the array is 3, the only candidate n for which this array could be a permutation of base[n], is n = 3. It can be seen that nums is a permutation of base[3] = [1, 2, 3, 3] (by swapping the second and fourth elements in nums, we reach base[3]). Therefore, the answer is true.
 *
 * **Example 3:**
 *
 * **Input:** nums = [1, 1]
 *
 * **Output:** true
 *
 * **Explanation:** Since the maximum element of the array is 1, the only candidate n for which this array could be a permutation of base[n], is n = 1. It can be seen that nums is a permutation of base[1] = [1, 1]. Therefore, the answer is true.
 *
 * **Example 4:**
 *
 * **Input:** nums = [3, 4, 4, 1, 2, 1]
 *
 * **Output:** false
 *
 * **Explanation:** Since the maximum element of the array is 4, the only candidate n for which this array could be a permutation of base[n], is n = 4. However, base[4] has five elements but array nums has six. Therefore, it can not be a permutation of base[4] = [1, 2, 3, 4, 4]. So the answer is false. 
 *
 * **Constraints:**
 *
 * *   `1 <= nums.length <= 100`
 * *   `1 <= num[i] <= 200`
**/
public class Solution {
    public boolean isGood(int[] nums) {
        int max = Integer.MIN_VALUE;
        int sum = 0;
        for (int i : nums) {
            if (i > max) {
                max = i;
            }
            sum += i;
        }
        if (max != nums.length - 1) {
            return false;
        }
        int newSum = max * (max + 1) / 2 + max;
        if (sum != newSum) {
            return false;
        }
        int count = 0;
        for (int i : nums) {
            if (i == max) {
                count++;
            }
        }
        return count == 2;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy