Leecode热题100---1:两数之和

题目:从nums中找出两个元素,它们的和等于target,返回下标。
C++:
1、直接暴力法
写嵌套循环,让每一个元素和其他元素分别相加,判断和是否等于target,等于就返回下标。

#include <iostream>
#include <vector>//int &nums:一个整型变量的引用
//vector<int> nums:nums是一个容器变量,容器名称为vector,容器内存的数据为int型
//vector<int> &nums:nums为一个引用,引用的内容是vector这个容器内部存放的整型数据class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int i, j;for (i = 0; i<nums.size() - 1; i++){for (j = i + 1; j<nums.size() - 1; j++){if (nums[i] + nums[j] == target){return{ i, j };}}}return{ };};
};int main()
{int target = 8;Solution two;vector<int> arr = { 1, 2, 3, 4, 5, 6, 7 };cout << "[" << two.twoSum(arr, target)[0] << "," << two.twoSum(arr, target)[1] << "]" << endl;system("pause");return 0;
}

2、find函数
遍历nums的每一个元素,用find方法从剩下的元素中找匹配的加数,找到就返回下标。

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {// 遍历numsfor(int i=0; i<nums.size(); i++){// 寻找另一个数,it为迭代器auto it = find(nums.begin()+i+1, nums.end(), target-nums[i]);// 如果找到另一个数if(it != nums.end()){// 迭代器转化为下标int other = it-nums.begin();return {i, other};}}return {};}
};

3、使用unordered_map,即哈希表
遍历nums的每一个元素,从哈希表中找匹配的加数,找到则返回下标,找不到就存入哈希表。


class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {// 声明无序哈希容器unordered_map<int, int> hash;// 遍历numsfor(int i=0; i<nums.size(); i++){// 在哈希表中寻找另一个数auto it = hash.find(target-nums[i]);// 如果找到另一个数if(it != hash.end()){return {i, it->second};}// 如果没找到,将当前遍历元素存入哈希表hash[nums[i]] = i;}return {};}
};

注:
1、vector的初始化方法,举例:vector nums{1, 2, 3}。

2、迭代器转下标的语法,举例:int index = it - nums.begin()。

3、向量的find方法的时间复杂度为O(n),哈希表的find方法的时间复杂度为O(1)。因为哈希表在查找的时候是通过内部的哈希函数进行计算的,不像向量的find是单纯地遍历元素。

python:
1、暴力解法

class Solution:def twoSum(self,nums:List[int],target:int) -> List[int]:for i in range(len(nums)):for j in range(i+1,len(nums)):if nums[i] + nums[j] == target:return [i,j]return []

2、排序+双指针

# 思路:copy一个临时temp,排序后查找和为target的两数索引,根据索引取值并求得在原nums中的索引并返回
import cv2
import numpy as np
class Solution2:def twoSum(self,nums:List[int],target:int) -> List[int]:temp=nums.copy()temp.sort()i=0j=len(nums)-1while i<j:if(temp[i]+temp[j])>target:j=j-1elif(temp[i]+temp[j])<target:i=i+1else:break# index() 函数用于从列表中找出某个值第一个匹配项的索引位置。p=nums.index(temp[i])nums.pop(p)  # pop()用于删除并返回列表中的一个元素(默认为最后一个元素)k=nums.index(temp[j])if k>=p:k=k+1return [p,k]

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

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

相关文章

RabbitMQ(四种使用模式)

文章目录 1.Fanout&#xff08;广播模式&#xff09;1.基本介绍2.需求分析3.具体实现1.编写配置类 RabbitMQConfig.java2.编写生产者&#xff0c;发送消息到交换机 MQSender.java3.编写消费者&#xff0c;接受消息 MQReceiver.java4.控制层调用方法&#xff0c;发送信息到交换机…

git error index file corrupt

错误提示&#xff1a; error: bad signature 0x00000000 fatal: index file corrupt 场景复现&#xff1a;在使用git add .提交代码到缓冲区时电脑宕机&#xff0c;重启后再次提交代码会出现该提示 原因分析&#xff1a;.git目录下的index文件损坏 解决方式&#xff1a; 删…

工程师工具箱系列(3)Arthas

文章目录 工程师工具箱系列&#xff08;3&#xff09;Arthas安装与准备Arthas插件使用场景查看某个变量值ognl方式调用Bean方法tt(TimeTunel)方式调用Bean的方法ognl调用带参数方法 资源总览 工程师工具箱系列&#xff08;3&#xff09;Arthas Java诊断利器 安装与准备 window…

LabVIEW学习记录3 - 自定义函数

LabVIEW学习记录3 - 自定义函数 一、LabVIEW学习记录二、自定义函数及函数调用 一、LabVIEW学习记录 【labVIEW】学习记录LabVIEW学习记录2 - MySQL数据库连接与操作LabVIEW学习记录 - 实时显示时间LabVIEW学习记录4-局部变量、全局变量、共享变量 二、自定义函数及函数调用 …

C++入门-stack和queue(下)

大家好啊&#xff0c;在这先祝天下的母亲节日快乐啦&#xff01;现在呢&#xff0c;给大家带来C中priority_queue和容器适配器的相关知识点 3.1 C 中的优先队列&#xff08;priority_queue&#xff09;介绍 优先队列&#xff08;priority_queue&#xff09;是一种特殊的队列…

洛谷 P6218 [USACO06NOV] Round Numbers S 题解 数位dp

[USACO06NOV] Round Numbers S 题目描述 如果一个正整数的二进制表示中&#xff0c; 0 0 0 的数目不小于 1 1 1 的数目&#xff0c;那么它就被称为「圆数」。 例如&#xff0c; 9 9 9 的二进制表示为 1001 1001 1001&#xff0c;其中有 2 2 2 个 0 0 0 与 2 2 2 个 1 …

Linux部署Heartbeat

环境信息&#xff1a; 10.1.13.75 master 10.1.13.140 slave 10.1.13.247 VIP 一&#xff0c;基础环境处理 1&#xff0c;修改主机名 master节点 hostnamectl set-hostname master slave节点 hostnamectl set-hostname slave 2&#xff0c;修改/etc/hosts vi /etc/hos…

transformer与beter

transformer与beter 解码和编码器含义tokizer标记器和one-hot独热编码编码解码--语义较好的维度空间矩阵相乘--空间变换编码理解如何构造降维的嵌入矩阵--实现到达潜空间上面是基础&#xff0c;下面是transformer正文自注意力机制注意力分数--上下文修正系数为什么需要KQ两个矩…

设计模式-07 设计模式-观察者模式(Observer Pattern)

设计模式-07 设计模式-观察者模式&#xff08;Observer Pattern&#xff09; 1.定义 观察者模式是一种软件设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;其中一个对象&#xff08;称为“主题”&#xff09;维护了一个依赖对象的列表&#xff08;称为“观察者”…

ssm125四六级报名与成绩查询系统+jsp

四六级报名与成绩查询系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱&am…

达梦数据插入操作的深坑

提示错误&#xff1a;Only if specified in the column list and SET IDENTITY_INSERT is ON, then identity column could be assigned value 插入的语句采用缺省的方式实现&#xff0c;执行插入操作失败&#xff1b; 原因分析&#xff1a; 1.自增长的SQL表里面插入指定ID的…

DIFT:Emergent Correspondence from Image Diffusion # 论文阅读

URL https://arxiv.org/pdf/2306.03881 主页&#xff1a;https://diffusionfeatures.github.io/ 代码&#xff1a;https://github.com/Tsingularity/dift TD;DR 23 年 6月 cornell 大学的文章&#xff0c;任务是做图片的特征匹配&#xff08;关联&#xff09;&#xff0c;特…

【kali工具使用】Tcpdump 抓包查看三次握手过程

Tcpdump 抓包查看三次握手过程 tcpdump 常用参数&#xff1a; -c 指定要抓取的数据包数量 -n 对 IP 地址以数字方式显式&#xff0c;否则显式为主机名 port 指定端口 -I 指定 tcpdump 需要监听的接口。默认会抓取第一个网络接口 tcp 1ClientSYN1seqx 2Server SYN1 seq…

树莓派|超声波传感器

VCC&#xff1a;超声波模块电源脚&#xff0c;接5V电源即可 Trig&#xff1a;超声波发送脚&#xff0c;高电平时发送出40KHZ出超声波 Echo&#xff1a;超声波接收检测脚&#xff0c;当接收到返回的超声波时&#xff0c;输出高电平 GND&#xff1a;超声波模块GND 测距原理&…

2025考研 | 北京师范大学计算机考研考情分析

北京师范大学&#xff08;Beijing Normal University&#xff09;简称“北师大”&#xff0c;由中华人民共和国教育部直属&#xff0c;中央直管副部级建制&#xff0c;位列“211工程”、“985工程”&#xff0c;入选国家“双一流”、“珠峰计划”、“2011计划”、“111计划”、…

--每周分享--

一、三数之和&#xff1a;15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; public class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> result new ArrayList<>();//判断极限条件&#xff1a;长度不…

NCL绘制WRF domain区域并添加气象站点

读取文件 根据官网例子Using gsn_csm_contour_map to plot WRF-ARW data绘制&#xff1a; ; It shows how to use gsn_csm_xxxx scripts to do the plotting. ; ; You can use the map projection settings on the WRF file, or you ; can use your own map projection. See …

路由器、交换机和网卡

大家使用VMware安装镜像之后&#xff0c;是不是都会考虑虚拟机的镜像系统怎么连上网的&#xff0c;它的连接方式是什么&#xff0c;它ip是什么&#xff1f; 路由器、交换机和网卡 1.路由器 一般有几个功能&#xff0c;第一个是网关、第二个是扩展有线网络端口、第三个是WiFi功…

ncs sdk nrf5340 运行DFU

nrf5340 运行DFU 1. dfu介绍 Nordic 的 DFU&#xff08;Device Firmware Update&#xff09;是一种用于更新设备固件的技术和协议。Nordic Semiconductor 是一家专门设计和制造无线芯片的公司&#xff0c;他们的产品主要用于物联网&#xff08;IoT&#xff09;和无线连接应用…

【数据分析面试】42.用户流失预测模型搭建(资料数据分享)

题目 保持高的客户留存率可以稳定和提到企业的收入。因此&#xff0c;预测和防止客户流失是在业务中常见的一项数据分析任务。这次分享的数据集包括了电信行业、银行、人力资源和电商行业&#xff0c;涵盖了不同业务背景下的流失预测数据。 后台回复暗号&#xff08;在本文末…