1. 两数之和

简介: 1. 两数之和

1. Two Sum


精彩评论

 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。


方法一:暴力枚举

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


方法二:哈希表

 暴力解法的时间复杂度过高,考虑使用一种方法将遍历过的信息存储起来,可以选择哈希表的方式,以空间换时间。可以先查询哈希表里是否存在target-x,如果不在就存进去,找到了就返回下标。

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


总结

 只会暴力是没救的

目录
相关文章
|
2月前
|
Python
01、两数之和——2021-04-12
01、两数之和——2021-04-12
10 0
|
2月前
|
存储
Leetcode第29题(两数相除)
LeetCode第29题要求使用不包含乘法、除法和mod运算符的方法计算两个整数的商,通过记录结果的正负,将问题转化为负数处理,并利用二进制幂次方的累加来逼近除数,最后根据结果的正负返回相应的商。
16 0
|
2月前
|
Go Python
01.两数之和
01.两数之和
15 0
|
4月前
|
算法
LeetCode第29题两数相除
这篇文章介绍了LeetCode第29题"两数相除"的解题方法,通过使用加法、减法和二进制位移法代替常规的乘除操作,并考虑了整数溢出问题,提供了一种高效的算法解决方案。
LeetCode第29题两数相除
|
6月前
LeetCode###445. 两数相加 II
LeetCode###445. 两数相加 II
30 2
|
6月前
1.两数之和
1.两数之和
|
7月前
|
存储 算法 Go
LeetCode第二题: 两数相加
 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
LeetCode第二题: 两数相加
|
7月前
leetcode-29:两数相除
leetcode-29:两数相除
42 0