Leetcode1 两数之和(C++)

题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

class Solution
{
public:
	vector twoSum(vector& nums, int target)          //返回类型为vector的int型的函数
	{
		unordered_map mp;

		for (int i = 0; i < nums.size() :i++)
		{
			auto it = mp.find(target - nums[i]);

			if (it != mp.end())
			{
				return { it->second,i };

			}
			mp[nums[i]] = i;

		}
		return {};
	}
};

补充1:
在c++中,vector是一个十分有用的容器。
作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

1 、基本操作
(1)头文件#include.
(2)创建vector对象,vector vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<
实例:vectortest;
//建立一个vector,int为数组元素的数据类型,test为动态数组名
简单的使用方法如下:
vectortest;//建立一个vector
test.push_back(1);
test.push_back(2);//把1和2压入vector,这样test[0]就是1,test[1]就是2

补充2:

若有unordered_map  mp;查找x是否在map中
    方法1:  若存在  mp.find(x)!=mp.end()
    方法2:  若存在  mp.count(x)!=0
it->second的用法:

MapForSort[99] = 1000000;
it->first就是下标,即99
it->second是值,即1000000
#include
#include
#include
using namespace std;
 
int main()
{
map maps;
maps.insert(pair("1",10));
maps.insert(pair("2",50));
maps.insert(pair("3",70));
for(map::iterator it=maps.begin();it!=maps.end();++it)
{        
cout << it->second << endl;
}
return 0;
}
 
 
Output:
10
50
70

你可能感兴趣的:(Leetcode算法)