今天是第一次刷LeetCode,来此发表一下自己的方法,并进行打卡。第1天

1、Two Sum

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.

大体意思是:给定一个int类型的数组和一个确定值,要求返回两个加和为确定值的数的下标。

以下是结合答案和自己的思路给出的复杂度为O(n)的答案。

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) 
 4     {
 5         
 6         vector<int> temp;
 7         unordered_map<int,int> num;//哈希表
 8         int t,i;
 9         //建立哈希表填充数值,每一个数值对应其下标
10         for(i = 0;i < nums.size();i ++)
11         {
12             num[nums[i]] = i;
13         }
14         for(i = 0;i < nums.size();i ++)
15         {
16             t = target - nums[i];根据一个数值求得另一个数值
17             if(num.find(t) != num.end() && num[t] > i)//判断t是否存在并判断下标是否比i小避免重复
18             {
19                             //返回两个下标
20                 temp.push_back(i);
21                 temp.push_back(num[t]);
22             }
23 
24         }
25         return temp;
26         
27     }
28 };                        

 

posted @ 2018-03-13 14:59  剑胆琴心V5  阅读(272)  评论(0编辑  收藏  举报