[leetcode]1. Two Sum
2017-07-11 11:13
190 查看
题目链接
问题描述
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
概要
给定一个整型数组和一个目标数,返回数组中两数相加能相等于目标数的两个索引,即下标。
假设每一个输入的数组仅有一个正确结果,且每个元素不能使用两次,即不能与自身相加。
思路
最容易的就是暴力法,逐个逐个地进行相加,只要和等于目标数,就得到结果,但比较慢。
第二种就利用哈希表来辅助查找,降低了时间复杂度,但增加了空间复杂度。
暴力法代码实现 时间复杂度 O(n^2) 空间复杂度 O(1)
哈希表辅助法实现 时间复杂度 O(n) 空间复杂度 O(n)
问题描述
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
概要
给定一个整型数组和一个目标数,返回数组中两数相加能相等于目标数的两个索引,即下标。
假设每一个输入的数组仅有一个正确结果,且每个元素不能使用两次,即不能与自身相加。
思路
最容易的就是暴力法,逐个逐个地进行相加,只要和等于目标数,就得到结果,但比较慢。
第二种就利用哈希表来辅助查找,降低了时间复杂度,但增加了空间复杂度。
暴力法代码实现 时间复杂度 O(n^2) 空间复杂度 O(1)
public class Solution { public int[] twoSum(int[] nums, int target) { int length = nums.length; for (int i = 0; i < length; i++) { for (int j = i + 1; j < length; j++) { if (nums[i] + nums[j] == target) { return new int[]{i, j}; } } } throw new IllegalArgumentException("No two sum solution"); } }
哈希表辅助法实现 时间复杂度 O(n) 空间复杂度 O(n)
public class Solution { public int[] twoSum(int[] nums, int target) { int length = nums.length; Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < length; i++) { map.put(nums[i], i); } for (int i = 0; i < length; i++) { int difference = target - nums[i]; if (map.containsKey(difference) && map.get(difference) != i) { return new int[]{i, map.get(difference)}; } } throw new IllegalArgumentException("No two sum solution"); } }
相关文章推荐
- Leetcode Two Sum (数组)
- 【LeetCode 1_数组_哈希表】Two Sum
- 【LeetCode刷题记录】Two Sum
- 【LeetCode】Two Sum
- Leetcode 1. Two Sum
- [leetcode, python] Two Sum 两数之和等于某数
- leetcode_1. Two Sum
- [leetCode]Two Sum
- leetcode Problem1 two sum
- leetcode【1+167 Two Sum 系列】【python】
- LeetCode解题笔记1 Two Sum
- [LeetCode]Two Sum
- LeetCode 1:Two Sum
- LeetCode-1.Two Sum
- LeetCode | Two Sum
- leetcode 1:Two Sum
- Leetcode 1 - Two Sum
- Leetcode:Two Sum
- [LeetCode] Two Sum
- 【LeetCode】Two Sum