本菜鸟最近准备参加一些高校的夏令营,所以从今天开始每天刷几道leetcode提高自己的编程能力。
题目
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
输入输出示例
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
分析
本题目运用了我之前学习较少的C++标准模板库vector。
Vector 是C++标准程序库中的一个类,可视为会自动扩展容量的数组,以循序(Sequential)的方式维护变量集合。vector的特色有支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比较费时。vector是C++标准程序库中的众多容器(container)之一。 vector以模板(泛型)方式实现,可以保存任意类型的变量,包括用户自定义的数据类型,例如:它可以是放置整数(int)类型的 vector、也可以是放置字符串(string)类型的 vector、或者放置用户自定类别(user-defined class)的 vector。
- 初始化
vector初始化由6种方式——
1. vector<int> list;
默认初始化,vector为空,list.size()=0,表明容器内没有元素,没有分配存储空间。
适用于动态添加元素的情况。
2.vector<int> list=list1;
list初始化为list1的拷贝,二者类型必须相同(比如同为<int>型)。
list将具有与list1相同的容量和元素。
3.vector<int> list={1,2,3,4,5}
这种初始化方法类似于数组,将list初始化为列表中元素的拷贝,列表中的元素必须与list中的元素类型相容。
4.vector<int> list(list1.begin()+2,list1.end()-1);
这种初始化方式类似于上一种,将list初始化为两个迭代器指定范围内的拷贝,范围中的元素类型必须与list中的元素类型相容。
5.vector<int> list1(5);
默认值初始化,包含5个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0.
用于初期元素个数可预知,但元素值需要动态获取的类型。
6.vector<int> list1(5,3);
指定值初始化,参数含义为list包含5个元素值为3的容器元素。
- 作为函数参数
当vector用作函数参数时,有其对应的引用格式——
void numabc(vector<int> &a)
- 当然还有很多其他知识点,在今后的学习中慢慢补充……
源码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n=nums.size();
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(nums[i]+nums[j]==target)
return vector<int>{i,j};
else
continue;
}
}
return vector<int>{0};
}
};
参考博客
https://blog.youkuaiyun.com/veghlreywg/article/details/80400382