Loading Now

[STLC++Map] maximumDifference

STL C++ Map

Bài tập.

Cho một mảng các chuỗi chuỗi chữ thường với các phần tử có thể trùng lặp. Hãy đưa ra khoảng cách lớn nhất giữa hai phần tử giống nhau ở trong dãy đó. 

Nếu không có bất kỳ hai chuỗi nào giống nhau thì trả về 0.

Ví dụ:

  • Với arr = ["codelearn", "io", "programmer", "codelearn", "programmer"]. thì maximumDifference(arr) = 3.
    Giải thích: hai phần tử giống nhau có khoảng cách lớn nhất trong trường hợp trên là arr[0]arr[3].

Hướng dẫn.

Dùng map <string, int> để lưu các chuỗi trong, với khóa là các chuỗi và ánh xạ của nó là chỉ số xuất hiện đầu tiên của nó.

Code mẫu:

int maximumDifference(std::vector<std::string> arr)
{
    map<string, int> mp;
    int ans = 0;
    for(int i=0;i<arr.size();i++){
        if(mp.find(arr[i]) == mp.end()){
            mp[arr[i]] = i;
        }
        else{
            ans = max(ans, i-(mp.find(arr[i])->second));
        }
    }
    return ans;
}

Post Comment

Contact