LeetCode 1. 两数之和

2023-11-14

题目链接:https://leetcode.cn/problems/two-sum/

思路如下:

从前往后遍历 n u m s [   ] nums[\ ] nums[ ] 数组,对于每个元素 n u m s [ i ] nums[i] nums[i] 我们做两件事:

  • 判断 t a r g e t − n u m s [ i ] target - nums[i] targetnums[i] 是否在哈希表中;
  • n u m s [ i ] nums[i] nums[i] 插入哈希表中;

由于数据保证有且仅有一组解,假设是 { j , i }   ( j < i ) \left\{ j, i \right\}\ (j<i) {j,i} (j<i),则我们循环到 n u m s [ i ] nums[i] nums[i] 时, n u m s [ j ] nums[j] nums[j] 一定在哈希表中,且有 n u m s [ j ] + n u m s [ i ] = = t a r g e t nums[j] + nums[i] == target nums[j]+nums[i]==target,所以我们一定可以找到解。

由于只扫描一遍,且哈希表 unordered_map 的插入和查询操作的复杂度是 O ( 1 ) O(1) O(1),所以总时间复杂度是 O ( n ) O(n) O(n)

C++代码如下:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int n = nums.size();
        unordered_map<int, int> hash;
        for (int i = 0; i < n; i++) {
            int x = target - nums[i];
            if (hash.count(x)) return {hash[x], i};
            hash[nums[i]] = i;
        }
        return {};
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 1. 两数之和 的相关文章

随机推荐

  • delphi ado 动态连接数据库

    unit Unit1 interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls DB ADODB E
  • Contains Duplicate III

    Given an array of integers find out whether there are two distinct indices i and j in the array such that the difference
  • 常用问题网址

    https www leonelngande com fetching the current route fragment in angular 7 RxJS https github com manojjha86 complete an
  • Router-Link详解

  • 文件(或文件夹)的复制(Java)

    将源文件 或目录 复制到另一个目录里 三种方法 1 最普通的方法 主要用File类中的方法和IO流相关的类进行递归复制 2 主要用Files类中的copy 方法递归复制 3 主要用Files类中的copy 方法和walkFileTree 方
  • 构建Buildroot根文件系统(I.MX6ULL)

    Busybox构建的根文件系统只有一些常用的命令和文件 Buildroot不仅集成了 busybox 而且还集成了各种常见的第三方库和软件 开发环境 Buildroot 版本 buildroot 2019 02 6 tar gz 虚拟机 4
  • XSS-通关小游戏(1-20)

    在玩游戏之前先简单的了解下 什么是XSS 1 什么是xss XSS攻击全称跨站脚本攻击 是为不和层叠样式表 Cascading Style Sheets CSS 的缩写混淆 故将跨站脚本攻击缩写为XSS XSS是一种在web应用中的计算机安
  • Unity --- UGUI(Unity Graphical user interface)--- Canvas画布

    1 UI User Interface 使用者与机器之间的交互界面 1 所谓的自适应系统指的是分辨率的适应 比如在一个分辨率下做的UI放到另一个分辨率下显示时 如果没有自适应系统的话就会导致UI过大 过小 被辟成一半等等情况 而有了自适应系
  • Android:项目结构

    前言 默认情况下 在 Android Studio 中创建 Android 项目后 将默认生成 Project Packages Scratches Android Project Fines Problems Production Tes
  • 性能指标有哪些

    1 响应时间 Response time 响应时间就是用户感受软件系统为其服务所耗费的时间 对于网站系统来说 响应时间就是从点击了一个页面计时开始 到这个页面完全在浏览器里展现计时结束的这一段时间间隔 看起来很简单 但其实在这段响应时间内
  • 开源GIS浅谈

    开源GIS浅谈 转 http blog csdn net happyduoduo1 article details 51773850 谈到GIS软件 首先让我们想到的是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品 从最初接触的ver
  • js中的微任务和宏任务,附面试题

    因为javascript是一门单线程语言 所以代码的解析执行都要以自上而下的执行 直到任务队列 task queue 的出现 js开始有了异步任务 当一段代码需要稍后执行时 便可以使用异步方案 setTimeout setInterval
  • Eclipse C debug报错Can‘t find a source file at “xxxxx“Locate the file or edit the source lookup path

    笔记备忘 1 操作入下 Debug configerations进入如下界面 双击你的放置器对应的选项 添加新的选项 在source位置记得添加如下选项 2 解决完上面报错还提示如下 no source for main step1 工程右
  • C++构造函数的各种用法全面解析(C++初学面向对象编程)

    文章目录 一 构造函数的基本用法 二 带参构造函数与其调用 三 拷贝构造函数 四 构造函数的重载 一 构造函数的基本用法 1 构造函数概念 一个类的对象被创建的时候 编译系统对象分配内存空间 并自动调用该构造函数 由构造函数完成成员的初始化
  • 解决:如何将pytorch的版本改为和cuda对应、如何使用笔记本电脑自带的NVIDIA使用GPU跑深度学习

    Step1 安装cuda 网址 https developer nvidia com cuda toolkit archive PS 此处必须先看看电脑显卡是否自己就装了cuda 可以通过执行命令行语句nvcc V以此检查cuda是否有 如
  • 字典表设计

    为什么字典表 存在问题 某些变量在多个地方使用 而且一般是固定的 但是随着系统升级和后期变化 可能需要改变 如果这些变量写死在代码里面将会变得难以维护 所以要将其从代码中抽离出来 一般的业务系统客户端与用户交互的时候都会使用下拉框组件 对于
  • Kafka3.0.0版本——消费者(分区的分配以及再平衡)

    目录 一 分区的分配以及再平衡 1 1 消费者分区及消费者组的概述 1 2 如何确定哪个consumer来消费哪个partition的数据 1 3 消费者分区分配策略 一 分区的分配以及再平衡 1 1 消费者分区及消费者组的概述 一个con
  • 样本的均值和方差的无偏估计与测试阶段均值方差的关系

    什么是无偏估计 估计是用样本统计量 可以理解为随机抽样 来估计总体参数时的一种无偏推断 无偏估计的要求就是 估计出来的参数的数学期望等于被估计参数的真实值 所以呢 可以看出 估计值也是一个变量 因为是随机的嘛 真实值谁也不知道啊 因为你不可
  • 数据隐藏之Qt中d指针详解

    最近看到代码有用到了Qt中的Q D指针 就去学习了下 发现真的很好用 因此写一篇文章总结下 student h class CStudent public CStudent CStudent private string m name in
  • LeetCode 1. 两数之和

    题目链接 https leetcode cn problems two sum 思路如下 从前往后遍历 n u m s nums