Day 1 Two Sum

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [3,2,4], target = 6
输出:[1,2]

这道题我们通常有两种解法:

第一种是暴力法,就是我们常见的思路双for循环,我们来分析一下为什么我们能这么简单地想出这个办法?其实就是遍历的思想,当你锚定第一个元素的时候,然后以此遍历接下来的每一个元素,其本质是:主动的寻找元素和第一个元素进行比较,所以第一种方式的比较次数会从高到低依次降低,即第一次是两次,第二次就是1次,从共是C32,也就是3次。但是一旦数组非常大的时候,那么遍历所花费的时间就很多了,时间复杂度是O(n2)。所以有没有时间复杂度更少的解法呢?

第二种是哈希表,这个解法有什么优势呢?其本质是什么呢?其实就是换了一种比较的思维,上一种方式中,都是锚定一个元素然后主动地和剩下的元素去比较,这种方式是主动的,比较次数依次减少,而哈希表是空间换时间,先建立一个哈希表,先让第一个元素自己躺进去,然后等别人和他来比较,换句话说就是从“主动”变为“被动”,那变成被动的就有优势啦?这个时候就要说说哈希表的特点了。不管是暴力法还是哈希表,都是有第一轮遍历的,但是在遍历的时候,两者做的事情确实不一样的!暴力法是在遍历第一个元素的时候,继续使用遍历,继续看剩下的元素,而哈希表是直接拉着第一轮遍历的元素来哈希表比较,在这个示例中,我们要求和,那么这个时候就要拿着第一轮遍历元素和target的差值来到哈希表中寻找,而哈希表寻找的时间复杂度是O(1),所以这个时候时间复杂度就比第二次遍历的时间复杂度要低很多了,如果在哈希表中没有找到的话,由于该元素只比较了第一个元素,没有和之后的元素进行比较,所以也要扔到哈希表中,这样话,到最后,比较的次数是逐次增加的,第一次是1次,第二次是两次,总共是C32,也就是3次。其中这种先比较后扔进去的方式也是很巧妙的,一开始的时候也很难想出来,因为如果知道用哈希表计算的话,很多人都会想着一开始就将所有的元素一起扔进哈希表中,然后再来遍历第一轮元素,然后一个个比较就好了。总之,哈希表的前种方式是将后种的两个步骤合二为一了。

那怎么实现呢?

在C语言中,需要手搓哈希表,所以非常不友好,不过奈何本人水平有限,只会C,所以借鉴了一下其他人的代码,代码如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《opencv实用探索·四》Mat图像数据类型转换和归一化显示

一种数据类型转为另一种数据类型,不改变图像大小,但每个像素值可能会变 src.convertTo(dst, type, scale, shift);Scale和shitf默认为0(这两个参数也相当于对比度和亮度) 现在有个8位图像,把8位转成32位 可以看到像素…

SparkRDD及算子-python版

RDD相关知识 RDD介绍 RDD 是Spark的核心抽象,即 弹性分布式数据集(residenta distributed dataset)。代表一个不可变,可分区,里面元素可并行计算的集合。其具有数据流模型的特点:自动容错,位置…

jetson如何安装onnxsim,Failed to build onnxsim或者是no module named ‘onnxsim‘

Failed to build onnxsim或者是no module named ‘onnxsim’ 方法:直接pip3 install onnxsim 这里需要注意你的cmake版本,旧版本1.18.3不行,我将cmake升级为3.27.5就可以,直接pip3 install cmake 3.27.5 安装onnxsim失败的原因就…

【目标跟踪】光流跟踪(python、c++代码)

文章目录 前言一、代码流程与思路二、python 代码2.1 代码详解2.2 完整代码 三、c 代码四、结果展示 前言 光流利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。…

WPF制作雷达扫描效果

前言 要实现该功能,我们就不得不先了解一下WPF里面的RenderTransform RenderTransform(渲染变换) <Border Height="100" Width="100" Background="Red"

ESP32:物联网时代的神器

随着物联网技术的不断发展&#xff0c;人们的生活正在发生着翻天覆地的变化。在这个万物互联的时代&#xff0c;ESP32作为一种功能强大的微控制器&#xff0c;正发挥着越来越重要的作用。本文将介绍ESP32的特点和应用&#xff0c;并探讨其在物联网时代的优势和潜力。 一、ESP3…

ModBus电表与RS485电表有哪些区别?

在能源计量领域&#xff0c;ModBus电表和RS485电表是两种常见的设备&#xff0c;它们都具有监测和记录电能数据的功能。然而&#xff0c;它们之间存在一些区别&#xff0c;比如通信协议、连接方式、数据格式等等参数的区别有哪些&#xff1f; ModBus电表和RS485电表都是用于电能…

FreeSWITCH学习笔记:EventSocket

Event Socket命令最后需带有两个换行符。 api 执行API命令。阻塞。 1api API [ARG [ ...]] auth 内连模式下身份验证。需要第一个发送。 1auth PASSWORD bgapi 后台执行API命令。不阻塞。 1bgapi API [ARG [ ...]]2[Job-UUID: UUID] 返回带有Job-UUID。当API命令执行完成…

GPT-4惨遭削弱,偷懒摸鱼绝不多写一行代码,OpenAI已介入调查

GPT-4再次遭网友“群攻”&#xff0c;原因是“懒”得离谱! 有网友想在Android系统开发一个能够与OpenAI API实时交互的应用。 于是把方法示例链接发给GPT-4&#xff0c;让它参考用Kotlin语言编写代码: 没成想&#xff0c;和GPT-4一来二去沟通半天&#xff0c;GPT-4死活给不出…

数字孪生智慧园区:企业与政府合作的共赢之选

随着科技的快速发展和数字化转型的推动&#xff0c;数字孪生技术正逐渐成为智慧城市和园区建设的重要方向。数字孪生智慧园区&#xff0c;以数字孪生技术为驱动&#xff0c;通过对园区实体和虚拟环境的全面感知和深度理解&#xff0c;为园区管理者和入驻企业提供智能化决策支持…

微信发红包,有哪些测试点

1、功能 1.在红包钱数&#xff0c;和红包个数的输入框中只能输入数字 2.红包里最多和最少可以输入的钱数 200 0.01 3.拼手气红包最多可以发多少个红包 100 3.1超过最大拼手气红包的个数是否有提醒 4.当红包钱数超过最大范围是不是有对应的提示 5.当发送的红包个数超过…

YOLOv5改进之ShuffleNetV2

目录 一、原理 网络结构 二、代码 三、应用到YOLOv5 一、原理

linux 之iptables

1.iptables防火墙基本介绍 Linux系统的防火墙&#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件 netfilter和 iptables 组成。 主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 iptables由软件包iptables提供的命令…

uniapp中使用pageScrollTo让页面滚动到固定节点或距离

uniapp中使用pageScrollTo让页面滚动到固定节点或距离 思路&#xff1a;计算当前节点距离顶部的距离滚动距离然后使用pageScrollTo进行滚动&#xff08;要保证页面加载完成之后在执行&#xff09; #topic" id &#xff1a;页面的节点 changeTop(id) {let query uni.c…

计算机技术指标

计算机的主要技术指标有性能、功能、可靠性、兼容性等参数&#xff0c;技术指标的好坏由硬件和软件两方面的因素决定。 ▶1.性能指标 系统性能是整个系统或子系统实现某种功能的效率。计算机的性能主要取决于速度与容量。计算机运行速度越快&#xff0c;在某一时间片内处理的…

量子计算:探索未来的计算技术

量子计算:探索未来的计算技术 引言 在过去的几十年里,我们见证了计算机技术从简单的计算和存储发展到复杂的数据处理和人工智能的飞速进步。然而,随着我们进一步探索科技的前沿,传统的计算方法开始显示出其局限性。在这种情况下,量子计算——一种基于量子力学原理的新型计…

windows上执行python-crontab定时程序

参考&#xff1a; https://blog.51cto.com/u_16175493/6762921 https://blog.51cto.com/u_16213645/7365321 https://blog.csdn.net/weixin_35753291/article/details/129060570 报错处理&#xff1a; https://cloud.tencent.com/developer/ask/sof/105993995 https://pypi.org…

filebrowser搭建网盘

在内网中使用IIS搭建FTP和WEBdev映射到外网&#xff0c;配置麻烦&#xff0c;使用体验不是很好&#xff0c;而使用filebrowser则简单多了。 一.下载文件 https://github.com/filebrowser/filebrowser/releases/ 下载windows版本二.解压部署 将安装包加压到d:\windows-browser …

案例,linux环境下OpenCV+Java,实现证件照在线更换背景色

先看效果&#xff08;图片来自网络&#xff0c;如有侵权&#xff0c;请联系作者删除&#xff09; 主要是通过java实现的&#xff0c;linux环境编译安装opencv及证件照背景色更换的核心算法在前面一篇文章中有写到。 目前算法还有瞎呲&#xff0c;当照片光线不均的时候会出现误…

阶段三:Web开发(学习如何在Web应用中进行数据库操作)

在Web应用中进行数据库操作是常见的需求&#xff0c;Python提供了多种库和框架来简化这个任务。以下是使用Python进行Web应用中数据库操作的基本步骤&#xff1a; 选择一个Web框架&#xff1a;Python有很多流行的Web框架&#xff0c;如Django、Flask和Tornado等。这些框架提供…