对集合中双重循环的优化思路
一遍哈希表
事实证明,我们可以一次完成。在进行迭代并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
复杂度分析:
时间复杂度:O(n)O(n), 我们只遍历了包含有 nn 个元素的列表一次。在表中进行的每次查找只花费 O(1)O(1) 的时间。
空间复杂度:O(n)O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储 nn 个元素。
挺有意思的,引自https://leetcode-cn.com/problems/two-sum/solution/
分享到:
相关推荐
而数据库与编程语言之间通常通过各种参数来进行交互,而XML刚好是它们之间的一个桥梁,把编程语中向面对象的数据序列化为XML,传递到数据库,数据库再转换为平面表,实现高效的集合操作。本文将深入的分析各种解决...
Matlab格式的线性规划循环问题集合_线性规划中的循环问题集合
mySql优化集合,MySql引擎优化方案
SQL优化SQL 优化方法集合SQL 优化方法集合SQL 优化方法集合
集合类型是swift语言的核心抽象概念之一,标准库中的主要集合类型包括:数组,集合,字典,从小脚本到大应用,它们几乎被用在所有的Swift程序中;该书讲解了如何设计一个新的通用的集合类型,怎样效仿标准库中已经...
从表面上来说,这本书围绕如何实现高性能集合类型进行展开。针对同一个简单的问题,我们 将提供多种不同的解决方案,并依次对它们进行详细地说明。同时为了不断地挑战性能巅峰, 我们会一直走在找寻新方法的探索征途...
在本书中,我们会介绍如何编写高性能的 Swift 集合类型代码。通观全书,我们创建了很多性能测试,并得到了一些让人惊喜的结果。我们将会探索如何用实现像是有序数组、二叉树、红黑树和 B 树这样的自定义数据结构,并...
objc.io 最新集合优化
for循环遍历键值对集合 SynchronizedDictionary, long> dd = new SynchronizedDictionary, long>(); dd.Add(1,2); dd.Add(2, 3); dd.Add(3, 4); dd.Add(4, 5); dd.Add(5, 6); long[] tempkeys = new long[dd....
增强型的for循环 和普通for循环一样 增强型的for循环 优点主要体现在集合中,随便举个例子 比如对 set 的遍历 一般是迭代遍历
java集合类arraylist循环中删除特定元素的方法.docx
分析了循环自相关函数和循环谱密度函数的解调性能、对噪声的免疫性能及其运算量大的局限性,兼顾故障特征提取的准确性和计算量,提出了峰值频率切片集合分析法:取循环自相关切片图上的各峰值频率作为循环频率分别做...
中英文翻译数据集百万数据集合中英文翻译数据集百万数据集合中英文翻译数据集百万数据集合中英文翻译数据集百万数据集合中英文翻译数据集百万数据集合中英文翻译数据集百万数据集合中英文翻译数据集百万数据集合中...
win7优化集合,各种win7优化工具集合
基于多色集合的PCB组装优化建模方法研究.pdf
系统优化工具集合用于优化各种注册表
注册表优化,注册表优化,注册表优化集合,注册表优化,注册表优化集合
对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序
主要介绍了Java for循环Map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java技巧,循环遍历集合,很方便的,是个通用的技巧。java中可以用来循环遍历任何一个集合的通用方法