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天前
|
Go Python
01.两数之和
01.两数之和
10 0
|
2月前
|
算法
LeetCode第29题两数相除
这篇文章介绍了LeetCode第29题"两数相除"的解题方法,通过使用加法、减法和二进制位移法代替常规的乘除操作,并考虑了整数溢出问题,提供了一种高效的算法解决方案。
LeetCode第29题两数相除
|
4月前
1.两数之和
1.两数之和
|
5月前
|
存储 算法 Go
LeetCode第二题: 两数相加
 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
LeetCode第二题: 两数相加
|
5月前
leetcode-29:两数相除
leetcode-29:两数相除
35 0
|
存储 算法 安全
LeetCode - #29 两数相除
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
存储 算法 测试技术
leetcode:29.两数相除
给定两个整数,被除数 dividend和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
82 0