首页 > 学院 > 开发设计 > 正文

LeetCode 1. Two Sum

2019-11-08 00:54:46
字体:
来源:转载
供稿:网友

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.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].

C++代码如下:

class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> index(2,0); for(int i=0;i<(nums.size()-1);i++) for(int j=i+1;j<(nums.size());j++) if(nums[i]+nums[j]==target) {index[0]=i; index[1]=j; } return index; }};

此方法时间复杂度为o(n^2),需要注意的是C++没有专门的求数组长度的函数,但vector容器的构造函数有size。 vector是一个多功能的,能够操作多种数据结构和算法的模板类和函数库,vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。(注:STL的容器从实现的角度讲可以说是类模板(class teplate)。)

1、vector容器的声明方式主要包括一下几种:

vector v ,创建一个空的vector。 vector v1(v) ,复制一个vector。 vector v(n) ,创建一个vector,含有n个数据,数据均已缺省构造产生。 vector v(n, elem) ,创建一个含有n个elem拷贝的vector。 vector v(beg,end) ,创建一个以[beg;end)区间的vector。 v.~ vector () ,销毁所有数据,释放内存。

2、vector中其他常用的函数用法:

v.assign(beg,end) , 将[beg; end)区间中的数据赋值给v。 v.assign(n,elem) , 将n个elem的拷贝赋值给v。 v.at(idx) , 传回索引idx所指的数据,如果idx越界,抛出out_of_range。 v.begin() , 传回迭代器重的可一个数据。 v.capacity() , 返回容器中数据个数。 v.clear() , 移除容器中所有数据。 v.empty() , 判断容器是否为空。 v.end() , 指向迭代器中的最后一个数据地址。 v.insert(pos,elem)       在pos位置插入一个elem拷贝,传回新数据位置(位置指传回地址值)。 v.insert(pos,n,elem)      在pos位置插入在[beg,end)区间的数据。无返回值。 v.insert(pos,beg,end)     在pos位置插入n个elem数据。无返回值。 v.erase(pos)          删除pos位置的数据,传回下一个数据的位置。 v.erase(beg,end)       删除[beg,end)区间的数据,传回下一个数据的位置。 v.capacity()     返回容器中数据个数。 v.size()       返回容器中实际数据的个数。 v.reserve()     保留适当的容量。 v.resize(num)    重新指定队列的长度。 v.max_size()   返回容器中最大数据的数量。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表