leetcode两数之和 c++实现

本文介绍了一种解决两数之和问题的高效算法实现,使用哈希表存储数组元素及其索引,以O(n)的时间复杂度快速查找目标值的配对元素,并附带了一个C++代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

s7.h

//
// Created by SwordArtOnline on 2020/9/26.
//

#ifndef T0916_3_S7_H
#define T0916_3_S7_H
#include <unordered_map>
#include <vector>
#include <iostream>
using namespace std;
//哈希map表时间复杂度 O(n)
//哈希map表空间复杂度O(n)
class s7 {
public:
    vector<int> twoSum(vector<int>&nums,int target) {
        unordered_map<int, int> record; //存入哈希map
        for (int i = 0; i < nums.size(); i++) {
            int complement = target - nums[i];
            if (record.find(complement) != record.end()) {//complement 不指向map的末尾 即在map中
                int res[2] = {i, record[complement]};//二维数组 ,新输入的元素num[i]+在map中的元素complement=target
                return vector<int>(res, res + 2);//返回原数组的下标,不考虑有多个 满足条件的情况
            }
            record[nums[i]] = i; //否则将新元素以(nums[i],i)存入 hash map中

        }
        throw invalid_argument("the input has no solution"); //没有找到  ,
    }
};


#endif //T0916_3_S7_H

main.cpp 测试

#include <iostream>

//int main() {
//    std::cout << "Hello, World!" << std::endl;
//    return 0;
//}
#include <unordered_map>
#include <vector>
#include <iostream>
using namespace std;
#include "s7.h"
int main(){
    int a[6]={1,2,3,4,6,3 };
    int target =7;
    vector<int> c= vector<int>(a,a+6);
    s7 b;
    vector<int> result =b.twoSum(c,target);

    for(int i=0;i< (result).size();i++)//遍历向量
        cout<< result[i]<<endl;
    return 0;
}

效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigData-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值