Description
Solutions
Submission
Count Groups
🤘 INTERN

Twilio's IT team is trying to send two new USB Cables to all the Software Engineers. The problem is that there are a lot of USB standards and they are mostly not compatible with each other. For this reason, the team has labeled all the n cables with a numerical tag. They come in a list of tags like tags=[0,1,2,...] where the ith cable has the tags[i]. For example, if tags= [2,3,1,2], the cable number 2 would have the tag 3.

Now we want to group them in pairs taking into account that they must be of the same type. The restrictions for grouping are:

  • Two cables can be formed together if they have the same tag.
  • A group is always formed by 2 cables.
  • One cable can only be in one 1 or 0 groups.
  • To do the most efficient distribution we want to create queries. A query has the form [left, right] and represents an interval in the list of cables. As a result of the query we want to retrieve the number of groups that can be formed. For example, if tags=[2,3,2,1] and the query=[1,3] we would take into consideration only the interval [2, 3, 2] and the number of groups would be 1 because we have two "2".

    The queries come in a list of q queries like [[l1, r1], [l2, r2]...q times]. They are all independent of each other. The result must be in a list of groups formed for each query [r1,r2...q times].

    Function Description

    Complete the function countGroups in the editor.

    countGroups has the following parameters:

    1. int tags[n]: the tags of the cables
    2. int queries[q][2]: the queries in the form (l, r)

    Returns

    int[]: the number of groups that can be formed for each query

    Example 1:

    Input:  tags = [2, 3, 4, 2], queries = [[1, 4], [3, 4]]
    Output: [1, 0]
    Explanation:
    - For the first query, all cables are considered. Cables 1 and 4 can be grouped as their tags are the same.
  • The tag of the cable number 1 is 2 and the tag of the cable number 4 is also 2.
  • There are no other group formations possible. So, the number of groups is 1.
  • - For the second query, cables 3 and 4 are considered, and their tags are [4, 2].
  • The tag of the cable number 3 is 4 and the tag of the cable number 4 is 2.
  • Since they are different, no groups can be formed. So, the number of groups is 0.
  • Hence, the answer is [1, 0].

    Example 2:

    Input:  tags = [2, 2, 2, 2], queries = [[1, 4]]
    Output: [2]
    Explanation:
    - We only have 1 query, all cables are considered.
  • The tag of the cable number 1 is 2, and the tag of the cable number 2 is also 2.
  • The tag of the cable number 3 is 2, and the tag of the cable number 4 is also 2.
  • There are no other group formations possible. So, the number of groups is 2.
  • Hence, the answer is [2].

    Constraints:
      Unknown for now
    Thumbnail 0
    Testcase

    Result
    Case 1

    input:

    output: