当前位置: 首页 > article >正文

Leetcode-两数之和

1.暴力枚举

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

新知识:

return {i,j}是一种初始化列表的语法,用于返回一个由两个元素组成的容器。具体返回的类型取决于函数的返回类型。也就是说函数返回时自动赋予类型。

时间复杂度:O(n^2)

2.哈希表

nums={6,3,8,2,1}   target = 8

一层循环:遍历到6时,哈希表无元素,直接插入哈希表;

遍历到3时,向哈希表中查找 target - 3 (= 5),此时表中只有6,没有找到,也把3插入哈希表;

遍历到8时,向哈希表查找0,没有找到,把8插入哈希表

遍历到2时,向哈希表查找6,找到了!此时返回一个数组{6的哈希值(下标),2的下标}即可

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int,int>m;
        m.insert(map<int,int>::value_type(nums[0],0));
        for(int i=1;i<nums.size();i++){
            if(m.count(target-nums[i])>0){
                return {m[target-nums[i]],i};
            }
            else{
                m.insert({nums[i],i});
            }
        }
        return{0,0};
    }
};

m.insert(map<int,int>::value_type(nums[0],0))通过显式构造一个 std::pair 来实现插入,是C++中一种较为传统的写法。可以简化为 m.insert({nums[i], i});

else{
    m[nums[i]]=i;//直接赋值的方式也可以实现插入,因为map会为不存在的元素自动创建键值对
}

http://www.kler.cn/a/518600.html

相关文章:

  • 跟我学C++中级篇——容器的连接
  • 【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构
  • 页高速缓存与缓冲区缓存的应用差异
  • 微信小程序1.1 微信小程序介绍
  • PaddleSeg 从配置文件和模型 URL 自动化运行预测任务
  • CLion开发Qt桌面
  • 【第六天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的贪心算法(持续更新)
  • flutter跨端UI框架简介
  • 简识JVM中的STW
  • 【二叉树】4. 判断一颗二叉树是否是平衡二叉树。5. 对称二叉树。6. 二叉树的构建及遍历 7. 二叉树的分层遍历 。
  • 使用 .NET Core 6.0 Web API 上传单个和多个文件
  • 12、MySQL锁相关知识
  • 分布式系统架构怎么搭建?
  • Flutter_学习记录_导航和其他
  • 小程序电商运营内容真实性增强策略及开源链动2+1模式AI智能名片S2B2C商城系统源码的应用探索
  • Linux之NetLink学习笔记
  • docker Ubuntu实战
  • 计算机图形学:实验四 带纹理的OBJ文件读取和显示
  • vue3自定义表格生成动态列
  • linux系统中的 scp的使用方法
  • 【面试题】 Java 三年工作经验(2025)
  • 2025美赛数学建模C题 奥运奖牌模型保姆级教程讲解|模型讲解
  • 为AI聊天工具添加一个知识系统 之68 详细设计 之9 三种中台和时间度量 之1
  • SpringBoot打包为JAR包或WAR 包,这两种打包方式在运行时端口将如何采用?又有什么不同?这篇文章将给你解惑
  • ESP8266 NodeMCU与WS2812灯带:实现多种花样变换
  • 家政预约小程序09服务管理