LeetCode 1. 两数之和【哈希表】
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 <= 10^4
-109 <= nums[i] <= 10^9
-109 <= target <= 10^9
只会存在一个有效答案
- 暴力求解
class Solution {/*** (暴力枚举) O(n^2)* 暴力枚举方法很简单:两重循环枚举下标 i,j,然后判断 nums[i]+nums[j] 是否等于 target。* 时间复杂度:由于有两重循环,所以复杂度是 O(n^2).*/public static int[] twoSum1(int[] nums, int target) {for (int i = 0; i < nums.length; i++) {for (int j = 0; j < i; j++) {if (nums[i] + nums[j] == target) {return new int[]{j, i};}}}/*for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {if(nums[i] + nums[j] == target)return new int[]{i, j};}}*/return null;}
}
- 哈希表法求解
class Solution {/*** (哈希表) O(n)* 重点:哈希表map中的key存放的是数组中的值,value存放的是该值在数组中的下标。* 循环一遍 nums数组,在每步循环中我们做两件事:* 1. 判断 target−nums[i] 是否在哈希表中;* 2. 将 nums[i] 插入哈希表中;* 解释:由于数据保证有且仅有一组解,假设是 [i,j](i<j),则我们循环到 j 时,nums[i]一定在哈希表中,* 且有 nums[i]+nums[j]==target, 所以我们一定可以找到解。* 时间复杂度:由于只扫描一遍,且哈希表的插入和查询操作的复杂度是 O(1),所以总时间复杂度是 O(n).*/public int[] twoSum(int[] nums, int target) {HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int another = target - nums[i];if (map.containsKey(another)) {return new int[]{map.get(another), i};}map.put(nums[i], i);}return new int[]{-1, -1};}
}
LeetCode 1. 两数之和【哈希表】相关推荐
- [leetcode]1.两数之和 + 哈希表:梦开始的地方,英语的abandon
方案一:暴力题解没什么可说的,当然不是面试官想看到的 复杂度分析 时间复杂度:O(N^2),其中 N是数组中的元素数量.最坏情况下数组中任意两个数都要被匹配一次.空间复杂度:O(1). 方案二:直白来 ...
- [leetcode]1.两数之和
[leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...
- LeetCode 1. 两数之和
LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- LeetCode 170. 两数之和 III - 数据结构设计(哈希map)
文章目录 1. 题目 2. 解题 1. 题目 设计并实现一个 TwoSum 的类,使该类需要支持 add 和 find 的操作. add 操作 - 对内部数据结构增加一个数. find 操作 - 寻找 ...
- 【前端来刷LeetCode】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- 力扣(leetcode)-1. 两数之和
描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组 ...
- 【LeetCode】两数之和
package leetcode.editor.cn;//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. // // 你可 ...
最新文章
- linux 用户和权限管理
- 计算机三级考试网络技术怎么复习,2017计算机三级考试的三大复习阶段(网络技术为例)...
- Maven常用的命令
- JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...
- 苹果自研 M1 芯片性能强大,却不支持 Docker ?
- python 类函数 成员函数_python内置函数类型,如何为新类型定义成员函数?
- JAVA学习第六十三课 — 关于client服务端 amp;amp; URL类 amp; URLConnection
- php单页搜索引擎小偷,PIGO mini php搜索小偷 v2.0 正式版
- 施乐打印机驱动程序安装(CP315/318DW)
- 信安冬令营实训报告(信息收集,主机渗透,内网渗透)
- EBS常用查询语句_查询银行账户
- 用Python做数据分析告诉你奶茶哪家最好喝性价比最高?
- 生活中错误的英文——写错的标语
- python在mac模拟鼠标点击_如何使用Python在Mac中控制鼠标?
- .NET : 一定不要忘记关闭DataReader对象
- java-net-php-python-jspm现代化社区去也管理系统计算机毕业设计程序
- MySQL学习笔记_03
- 底层放弃教育,中产过度焦虑,上层不玩中国高考
- 取代 Ant:使用 Maven 管理 Wowza 插件开发
- 将String字符串转化为int