力扣 1 两数之和

力扣 1 两数之和

题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

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

在这里插入图片描述

这是我第一个想到的解法,也就是暴力解法,时间复杂度:O(n^2)空间复杂度:O(1)

那么为了降低时间复杂度,想到的就是空间换时间,利用哈希表。
暂时还没学会用哈希表的代码,学会了再补充。

发布了15 篇原创文章 · 获赞 1 · 访问量 305

猜你喜欢

转载自blog.csdn.net/Janna_woo/article/details/103874941