求数组中两数之和等于target的两个数的下标

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

、、、、、、、、、、、、、、、、、、、、、题目来源 LeetCode。
c++复杂版(输出只要符合返回值类型即可,格式题目有其他函数进行保证)练习了vector的一些函数的使用
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int numberLen = nums.size();
        vector<int> arr;
         if(numberLen > 1)
         {
          
             for(int i =0 ; i<numberLen ; i++)
             {
                 for(int j = i+1; j<numberLen ;j++)
                {
                    // if(nums[i]>target || nums[j]>target)
                    // {
                         //这里的判断不能写,因为有负数+大整数的情况
                    // }
                     if((nums[i]+ nums[j]) == target)
                     {
                         arr.push_back(i);
                         arr.push_back(j);
                         return arr;
                     }
                 }
            }
         }
         // vector <int>::iterator iter=arr.begin();
         // for ( ;iter!=arr.end();)
         // {
         //    iter=arr.erase(iter);//相对于clear会多耗时100多毫秒
         // }
        arr.clear();
         return arr;
        
    }
};

但是这个复杂度是O(N2);

官方建议哈希表进行查找

原文地址:https://www.cnblogs.com/8335IT/p/10396080.html