1. 程式人生 > >leetCode 1. Two Sum

leetCode 1. Two Sum

size_t 反向 back 數組 rst 如果 end 分享 solution

技術分享

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
        map<int,int> s;
        for(int i=0;i<nums.size();++i)
        {
            map<int,int>::iterator it=s.find(target-nums[i]);
            if(it!=s.end())
                
return {it->second, i}; s[nums[i]]=i; } } };

find 函數主要實現的是在容器內查找指定的元素,查找成功返回一個指向指定元素的叠代器,查找失敗返回end叠代器。

在數組中查找:

int * p=find(first, end,val);//first 是容器的首叠代器,last是容器的末叠代器,val是要查找的元素。

在vector容器中查找:

vector<int> v;

for(i=1:n)

v.pushback(i);

vector<int> :: iterator iter=find(v.begin(),v.end(),num);

if(iter==v.end())//判斷是否找到

在字符串中查找:

string str("abdefg");

string str2("ab");

size_t found= str.find(str2); //如果沒找到返回C++中npos

size_t found=str.find_first_of(str2);//返回第一次出現的地方

size_t found=str.find(str2,1,3);//從1開始查找字符串str2的前n個字符

size_t found=str.find(str2,5);// 從下標5開始查找

size_t found=str.rfind(str2);//反向查找

leetCode 1. Two Sum