FastPrepMinimum Domino Removals

Minimum Domino Removals

Microsoft logoMicrosoft● MediumFULLTIMEOA
Learn

Problem statement

A domino is a rectangular tile divided into two square parts. There are between 1 and 6 dots on each of the parts. There is an array A of length 2*N, representing N dominoes. Dominoes are arranged in a line in the order in which they appear in array A. The number of dots on the left and the right parts of the K-th domino are A[2*K] and A[2*K+1], respectively. For example, an array A = [2, 4, 1, 3, 4, 6, 2, 4, 1, 6] represents a sequence of five domino tiles: (2,4), (1,3), (4,6), (2,4), and (1,6).

In a correct domino sequence, each pair of neighboring tiles should have the same number of dots on their adjacent parts. For example, tiles (2, 4) and (4, 6) form a correct domino sequence and tiles (2, 4) and (1, 3) do not. What is the minimum number of domino tiles that must be removed from the sequence so that the remaining tiles form a correct domino sequence? It is not allowed to reorder or rotate the dominoes.

Given an array A representing a sequence of N domino tiles, returns the minimum number of tiles that must be removed so that the remaining tiles form a correct domino sequence.

Function

minNumTiles(A: int[]) → int

Examples

Example 1

A = [2, 4, 1, 3, 4, 6, 2, 4, 1, 6]return = 3

The second and the last two dominoes should be removed. After this, the remaining dominoes are (2, 4) and (4, 6).

Example 2

A = [5, 1, 2, 6, 6, 1, 3, 1, 4, 3, 4, 3, 4, 6, 1, 2, 4, 1, 6, 2]return = 7

There are 10 dominoes. Keep (2, 6), (6, 1), and (1, 2). These three form a correct sequence, so the other 7 dominoes are removed.

Example 3

A = [1, 5, 3, 3, 1, 3]return = 2

No two dominoes can be connected without rotating or reordering them. Keep any one domino and remove the other two.

Constraints

  • 🍇🍇

More Microsoft problems

See Microsoft hiring insights
public int minNumTiles(int[] A) {
  // Write your code here :)
}
A[2, 4, 1, 3, 4, 6, 2, 4, 1, 6]
expected3
Checking account…