← All problems

2260. Minimum Consecutive Cards to Pick Up

MediumOpen on LeetCodeProblem statement

Problem Statement

2260. Minimum Consecutive Cards to Pick Up

Medium


You are given an integer array cards where cards[i] represents the value of the ith card. A pair of cards are matching if the cards have the same value.

Return the minimum number of consecutive cards you have to pick up to have a pair of matching cards among the picked cards. If it is impossible to have matching cards, return -1.

 

Example 1:

Input: cards = [3,4,2,3,4,7]
Output: 4
Explanation: We can pick up the cards [3,4,2,3] which contain a matching pair of cards with value 3. Note that picking up the cards [4,2,3,4] is also optimal.

Example 2:

Input: cards = [1,0,5,3]
Output: -1
Explanation: There is no way to pick up a set of consecutive cards that contain a pair of matching cards.

 

Constraints:

C++

Source file
class Solution {
public:
    int minimumCardPickup(vector<int>& cards) {
        map <int, int> m;
        pair<int, int> minima ={-1, INT_MAX};
        for(int i=0; i<cards.size(); i++){
            if(m[cards[i]]){
                if(minima.second>i-m[cards[i]]+1)
                    minima = {cards[i], i-m[cards[i]]+1};
            }
            m[cards[i]]=i+1;
        }
        return minima.second==INT_MAX?-1:minima.second+1;
    }
};