
[STLC++Map] maximumDifference
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]
và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