leetcode 1 两数之和

简介: leetcode 1 两数之和

两数之和


802e06ef3c374e819d9d7ccbc0032338.png

暴力法

两层for循环,遍历数组求满足target的值

复杂度高

哈希表

遍历一次数组,查看当前遍历的数组的值时候,map里面有无target - nums[i]。

  • 如果没有,将当前遍历的数和下标组成pair存入map中。
  • 如果有,返回当前遍历数组值下标和map中找的的值下标。
#include <iostream>
#include<vector>
#include <unordered_map>
using namespace std;
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> num_map;
        for (int i = 0; i < nums.size(); i++)
        {
            auto iter = num_map.find(target - nums[i]);
            if (iter == num_map.end())
            {
                num_map.insert(pair<int, int>(nums[i], i));
            }
            else
            {
                return { (*iter).second , i};
            }
        }
    }
};
int main()
{
    vector<int>nums = { 2,7,11,15 };
    int target = 9;
    Solution a;
    vector<int>result = a.twoSum(nums , target);
    for (int i = 0; i < result.size(); i++)
    {
        cout << result[i] << ' ';
    }
   return 0;
}

二刷

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

高频题

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int left , right;
        for(left = 0 ; left < nums.size() ;left++)
        {
            for(right = left + 1 ; right < nums.size() ; right++)
            {
                if( nums[right] + nums[left] == target ) return {left,right};
            }
        }
        return {};
    }
};
相关文章
|
3月前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
5天前
|
存储 索引
LeetCode------两数之和(3)【数组】
这篇文章介绍了LeetCode上的"两数之和"问题,提供了两种解法:一种是暴力求解法,通过双层循环遍历数组元素对查找两数之和为目标值的索引,时间复杂度为O(n^2);另一种是使用HashMap优化,通过存储元素值和索引,时间复杂度降低到O(n)。
LeetCode------两数之和(3)【数组】
|
4天前
|
算法
LeetCode第1题两数之和
该文章介绍了 LeetCode 第 1 题两数之和的解法,通过使用 HashMap 来记录数组元素及其下标,以 O(n)的时间复杂度解决问题。
|
8天前
|
JavaScript 前端开发 PHP
leetcode——两数之和【一】
leetcode——两数之和【一】
14 0
|
11天前
|
存储 算法 Java
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
10 0
|
2月前
|
存储 算法 索引
力扣经典150题第四十三题:两数之和
力扣经典150题第四十三题:两数之和
16 1
|
2月前
|
算法 测试技术 程序员
力扣经典150题第二十七题:两数之和 II - 输入有序数组
力扣经典150题第二十七题:两数之和 II - 输入有序数组
16 1
|
2月前
力扣-两数之和
力扣-两数之和
14 1
|
2月前
|
算法 数据挖掘 Java
深入解析力扣167题:两数之和 II(双指针法详解及模拟面试问答)
深入解析力扣167题:两数之和 II(双指针法详解及模拟面试问答)
|
2月前
|
存储 算法 Java
【经典算法】LeetCode1:两数之和(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode1:两数之和(Java/C/Python3实现含注释说明,Easy)
21 1