LeetCode-in-Java

3447. Assign Elements to Groups with Constraints

Medium

You are given an integer array groups, where groups[i] represents the size of the ith group. You are also given an integer array elements.

Your task is to assign one element to each group based on the following rules:

Return an integer array assigned, where assigned[i] is the index of the element chosen for group i, or -1 if no suitable element exists.

Note: An element may be assigned to more than one group.

Example 1:

Input: groups = [8,4,3,2,4], elements = [4,2]

Output: [0,0,-1,1,0]

Explanation:

Example 2:

Input: groups = [2,3,5,7], elements = [5,3,3]

Output: [-1,1,0,-1]

Explanation:

Example 3:

Input: groups = [10,21,30,41], elements = [2,1]

Output: [0,1,0,1]

Explanation:

elements[0] = 2 is assigned to the groups with even values, and elements[1] = 1 is assigned to the groups with odd values.

Constraints:

Solution

import java.util.Arrays;

public class Solution {
    public int[] assignElements(int[] groups, int[] elements) {
        int i;
        int j;
        int maxi = 0;
        for (i = 0; i < groups.length; i++) {
            maxi = Math.max(maxi, groups[i]);
        }
        int n = maxi + 1;
        int[] arr = new int[n];
        int[] ans = new int[groups.length];
        Arrays.fill(arr, -1);
        for (i = 0; i < elements.length; i++) {
            if (elements[i] < n && arr[elements[i]] == -1) {
                for (j = elements[i]; j < n; j += elements[i]) {
                    if (arr[j] == -1) {
                        arr[j] = i;
                    }
                }
            }
        }
        for (i = 0; i < groups.length; i++) {
            ans[i] = arr[groups[i]];
        }
        return ans;
    }
}