映射和矢量- c++中的stl
Maps and Vectors -STL in C++
谁能解释一下这段代码的工作原理?它是求向量中两个元素相加得到给定目标的索引。我不明白STL是如何工作的
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int>m;
vector<int>v;
if(nums.size()==0)
{
return v;
}
for(int i=0;i<nums.size();i++)
{
if(m.find(nums[i])==m.end())
{
m[target-nums[i]]=i+1;
}
else
{
v.push_back(m[nums[i]]);
v.push_back(i+1);
}
}
return v;
}
};
这很简单。假设向量是{8,4,3,2,5},目标是10。你找到的第一个数字是8,所以现在你知道你要找的是2(因为8 + 2等于10)。因此,向映射添加新的目标2和索引8(索引为1,因为索引是以1为基础的)。下一个数字是4,现在你要找的是6,所以6和索引2被添加到映射中。现在地图是这样的
2 ==> 1
6 ==> 2
最终您将在映射中找到一个目标(在本例中我们将找到一个2),映射给我们原始8的索引,并且我们知道2的索引,因为我们刚刚找到了它,所以我们可以输出两个索引。
代码可以改进,但我认为它是有效的
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中的"inline"关键字
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 用C++中的一个变量定义一个常量
- vector.resize()中的分配错误
- 使用指针从C++中的数组中获取最大值
- arr[-1]在c++中的奇怪行为
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 将值指定给向量(2D)的向量中的某个位置
- 内置函数可查看CPP中的成员变量