【发布时间】:2022-11-04 22:01:49
【问题描述】:
直到现在我才想到一个想法,我已经制作了字符串和向量的映射
像这样
map<int,int> m; map <int,vector<int>> m; map <string,vector<int>> m;
其他数据类型也可以进行各种组合。
但是如果我这样做会发生什么
map <vector<int>,vector<int>> m; or map <vector<int>,vector<vector<int>>> m;
等等
我正在解决一个问题 leetcode,其中这种格式可能会有所帮助 https://leetcode.com/contest/biweekly-contest-90/problems/odd-string-difference/ 我试过这样
class Solution {
public:
string oddString(vector<string>& words) {
map <vector<int>,vector<string>> m;
for(auto i:words)
{
// m[{int(i[0]-i[1]), int(i[1]-i[2])}].push_back(i);
vector<int> v;
for(int j=1;j<i.size();j++)
{
v.push_back(int(i[j]-i[j-1]));
}
}
for(auto i:m)
{
if(i.second.size() ==1)
{
return i.second[0];
}
}
return "";
}
};
【问题讨论】:
-
当你尝试时发生了什么?您可能想添加一个
int main(),以便其他人可以测试。单独的解决方案类不是minimal reproducible example -
我通常对这类问题的回答是“为什么你认为你不能?”但是你必须保持低调,其中一个模组认为人们自己尝试东西是纯粹的邪恶。
-
有什么用?它会让你做什么?您将如何使用它并选择其中一个映射向量?
-
值类型基本无关;但在某些情况下,您可能无法使用
[]。至于键类型:只要类型与同类型的对象可比较,就可以使用std::map,默认比较...std::vector实现比较运算符... -
不会发生什么特别的事情,您只需将
std::vector<std::string>作为地图中的键。向量的默认operator<只是按字典顺序比较所有元素。对我来说听起来效率不高,但无论如何你都可以使用它。
标签: c++