力扣:1.两数之和(O(n)复杂度)

ops/2025/3/4 14:25:23/

1. 两数之和 - 力扣(LeetCode)1. 两数之和 - 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。 示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,2]示例 3:输入:nums = [3,3], target = 6输出:[0,1] 提示: * 2 <= nums.length <= 104 * -109 <= nums[i] <= 109 * -109 <= target <= 109 * 只会存在一个有效答案 进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?https://leetcode.cn/problems/two-sum/description/

思路:

把这个数组想象成一群人,其中只能有2个有缘的人结婚。建一个空的hash表,然后遍历数组,在hash表中找出另一个有缘人。找的过程中,如果另一个人不是有缘人(另一个有缘人 target-nums[i] 不在hash表)就把该数添加到hash表,重复此过程,直到找到有缘人。

时间复杂度为O(n),最坏的情况也仅仅需要遍历数组一次

class Solution {public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer>storeNums=new HashMap<>();
int[] result=new int[2];
for(int i=0; i<nums.length; i++){
int another=target-nums[i];
Integer anotherIndex=storeNums.get(another);if(anotherIndex!=null){result[0]=anotherIndex;result[1]=i;break;
}else storeNums.put(nums[i], i);
}return result;}
}


http://www.ppmy.cn/ops/163063.html

相关文章

解决Docker拉取镜像超时错误,docker: Error response from daemon:

当使用docker pull或docker run时遇到net/http: request canceled while waiting for connection的报错&#xff0c;说明Docker客户端在访问Docker Hub时出现网络连接问题。可以不用挂加速器也能解决&#xff0c;linux不好用clash。以下是经过验证的方法&#xff08;感谢轩辕镜…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_core_module_t

ngx_core_module_t 定义在 src/core/ngx_module.h typedef struct {ngx_str_t name;void *(*create_conf)(ngx_cycle_t *cycle);char *(*init_conf)(ngx_cycle_t *cycle, void *conf); } ngx_core_module_t;ngx_core_module_t 是 Ngi…

【GraphQL API 漏洞简介】

GraphQL API 漏洞简介 一、漏洞原理与分类二、漏洞检测方法三、典型利用方式四、工具推荐防御建议 GraphQL API 因其灵活性和高效性被广泛应用&#xff0c;但也因设计和实现缺陷存在多种安全风险。以下从漏洞原理、检测方法及利用方式三个维度进行详细分析&#xff1a; 一、漏洞…

[python] 最小堆

本文通过一道例题来介绍python中的最小堆 合并K个升序链表 import heapq ListNode.__lt__ lambda a, b: a.val < b.val # 让堆可以比较节点大小 class Solution: def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]: cur dum…

Fiji —— 基于 imageJ 的免费且开源的图像处理软件

文章目录 一、Fiji —— 用于科学图像处理和分析1.1、工具安装&#xff08;免费&#xff09;1.2、源码下载&#xff08;免费&#xff09; 二、功能详解2.0、Fiji - ImageJ&#xff08;Web应用程序&#xff09;2.1、常用功能&#xff08;汇总&#xff09;2.2、Fiji - Plugins&am…

安卓音频框架混音器

在 Android 音频框架中&#xff0c;混音器&#xff08;Mixer&#xff09; 是 AudioFlinger 服务的核心组件之一&#xff0c;负责将多个音频流&#xff08;来自不同应用或系统组件&#xff09;混合为统一的输出流&#xff0c;再传输到音频硬件设备&#xff08;如扬声器、耳机等&…

未来该如何选择编程语言?

随着技术的飞速发展&#xff0c;编程语言的选择变得越来越重要。无论是初学者还是资深开发者&#xff0c;选择一门适合未来发展的编程语言都至关重要。以下是一些关键因素和建议&#xff0c;帮助您做出明智的选择。 --- #### 1. **明确目标和需求** - **职业方向**&#x…

7.2.1 计算机网络互连设备

文章目录 中继器集线器网桥交换机路由器网关完整导图 中继器 计算机网络互连设备包含中继器、集线器、网桥、交换机、路由器、网关&#xff0c;共6种。 中继器&#xff08;Repeater) 可用于放大信号&#xff0c;延长网络传输距离&#xff0c;连接不同传输介质的网络。中继器不对…