hardArrayBinary Indexed Tree 0 views

Alternating Groups III

There are some red and blue tiles arranged circularly.

There are some red and blue tiles arranged circularly. You are given an array of integers colors and a 2D integers array queries.

The color of tile i is represented by colors[i]:

An alternating group is a contiguous subset of tiles in the circle with alternating colors (each tile in the group except the first and last one has a different color from its adjacent tiles in the group).

You have to process queries of two types:

Return an array answer containing the results of the queries of the first type in order.

Note that since colors represents a circle, the first and the last tiles are considered to be next to each other.

Example 1

Input: colors = [0,1,1,0,1], queries = [[2,1,0],[1,4]]

Output: [2]

Explanation: First query: Change colors[1] to 0. Second query: Count of the alternating groups with size 4:

Example 2

Input: colors = [0,0,1,0,1,1], queries = [[1,3],[2,3,0],[1,5]]

Output: [2,0]

Explanation: First query: Count of the alternating groups with size 3: Second query: colors will not change. Third query: There is no alternating group with size 5.

Constraints

  • 4 <= colors.length <= 5 * 10^4
  • 0 <= colors[i] <= 1
  • 1 <= queries.length <= 5 * 10^4
  • queries[i][0] == 1 or queries[i][0] == 2
  • For all i that: queries[i][0] == 1: queries[i].length == 2, 3 <= queries[i][1] <= colors.length - 1 queries[i][0] == 2: queries[i].length == 3, 0 <= queries[i][1] <= colors.length - 1, 0 <= queries[i][2] <= 1
  • queries[i][0] == 1: queries[i].length == 2, 3 <= queries[i][1] <= colors.length - 1
  • queries[i][0] == 2: queries[i].length == 3, 0 <= queries[i][1] <= colors.length - 1, 0 <= queries[i][2] <= 1

Hints

Companies

No companies reported yet.

Discussion

Sign in to join the discussion.

Loading discussion...

Test results

No test cases yet.