Two Sum 计算两数和是否满足目标
来源:互联网 发布:层次聚类算法 编辑:程序博客网 时间:2024/05/22 01:50
先来看看给的例子:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].如果有满足target = 9的,就返回下标。
解法1:
我们先可以有一个很直接的解法:
遍历数组中每个一个元素A,再看它后面的元素B ,A + B 是否等于target
复杂度:
时间复杂度:O (n^2)
空间复杂度:O (1)
效率:
代码:
public int[] twoSum(int[] nums, int target) { return twoSumHash(nums, target); } private int[] twoSumBruteForce(int[] nums, int target) { int[] result = new int[2]; for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[j] + nums[i] == target) { result[0] = i; result[1] = j; return result; } } } return result; }
解法2:
解法1中,对于每一个数,我们找它后面的数的时间复杂度为O(1),能不能有更好的方法直接找到呢?
可以的, 利用hashmap的方法,先遍历一遍数组,将所有的元素存进去
接着遍历一遍数组,对于每一个元素,直接去hashmap中找有没有符合条件的(注意:找到的元素不能是它本身)
复杂度:
时间复杂度O(n)
空间复杂度O(n)
效率:
代码:
public int[] twoSum(int[] nums, int target) { return twoSumHash(nums, target); } private int[] twoSumHash(int[] nums, int target) { Map<Integer, Integer> store = new HashMap<>(); for (int i = 0; i < nums.length; i++) { store.put(nums[i], i); } for (int i = 0; i < nums.length; i++) { if (store.containsKey(target - nums[i])) { int index = store.get(target - nums[i]); if (index != i) { return new int[]{i, index}; } } } return new int[2]; }
1 0
- Two Sum 计算两数和是否满足目标
- Two Sum--两数之和
- Two sum 两数之和
- leetcode 1. Two Sum两数和(HashMap)
- 371. Sum of Two Integers, 不用加减乘除运算符计算两数之和
- LeetCode Two Sum 两数之和
- 【LeetCode】- Two Sum(两数相加)
- leetcode 1 Two Sum 两数之和
- *[Lintcode]Two Sum 两数之和
- Two Sum(两数之和)
- 1. Two Sum - 两数求和
- lintcode 两数之和(Two Sum )(Java)
- LeetCode-Two Sum(两数之和)
- 1、Two Sum(两数之和)
- [leetcode, python] Two Sum 两数之和等于某数
- LeetCode 167. Two Sum II - Input array is sorted(两数和)
- LeetCode 170. Two Sum III - Data structure design(两数和)
- leetcode——Two Sum 两数之和(AC)
- 使用Java如何让需求在指定时间内生效
- 32位操作系统下各种数据类型所占有的字节数
- Cocoa pods的安装使用
- 关于下拉框切换取值的例子
- 关于浏览器关闭后session是否被删除的问题
- Two Sum 计算两数和是否满足目标
- HashMap的工作原理
- 第四专题 Problem C
- 摄像机标定矫正畸变
- 卡特兰数变形之Unique Binary Search Trees II
- 关于live555的总结
- 怎样编辑操作PDF文件
- 国外大神分享:给程序员的实用编程7+1条小贴士
- Xcode中的Release、Debug、Archive、Profile、Analyze