[LeetCode-Algorithms-1] "Two Sum" (2017.9.8)
2017-09-08 20:54
471 查看
题目链接:Two Sum
题目描述: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].
<1>题目思路:这个题目比较简单,直接用穷举的方法,用两个变量顺序循环数组进行匹配,时间复杂度为 O(n2) 。
<2>代码:
int* twoSum(int* nums, int numsSize, int target) { int *indices = (int *)malloc(2 * sizeof(int)); for (int i = 0; i < numsSize; i++) { for (int j = i + 1; j < numsSize; j++) { if (nums[i] + nums[j] == target) { indices[0] = i; indices[1] = j; return indices; } } } return indices; }
<3>提交结果:
可以看到,虽然通过了测试,但是运行时间并不是非常理想,在讨论中发现了运行时间更快的一种使用map的方法:
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> map; int n = (int)nums.size(); for (int i = 0; i < n; i++) { auto p = map.find(target-nums[i]); if (p!=map.end()) { return {p->second+1, i+1}; } map[nums[i]]=i; } } };
但其实它的时间复杂度也达到了O(n2) 级别,因为map.find也是O(n) 的,所以我觉得虽然这个方法时间相对来说短一些,但时间复杂度上并没有实质性的提高,而且相对于原始方法来说难以理解。
相关文章推荐
- LeetCode "Sum of Two Integers"
- [LeetCode-Algorithms-3] "Longest Substring Without Repeating Characters" (2017.9.8)
- [LeetCode-Algorithms-216] "Combination Sum III" (2018.1.1-WEEK18)
- Leetcode-Algorithms Two Sum
- [LeetCode-Algorithms-40] "Combination Sum II" (2017.11.29-WEEK13)
- [LeetCode-Algorithms-654] "Maximum Binary Tree" (2017.9.8)
- [LeetCode-Algorithms-39] "Combination Sum" (2017.11.29-WEEK13)
- LeetCode TwoSum
- leetcode: two sum, hash search solution, java. O(n)
- leetcode--two_sum问题
- LeetCode之“散列表”:Two Sum && 3Sum && 3Sum Closest && 4Sum
- [LeetCode-Algorithms-517] "Super Washing Machines" (2018.1.8-WEEK19)
- LeetCode 1. Two Sum(java)
- LeetCode:Two Sum
- 【python】【leetcode】【算法题目167—Two Sum II - Input array is sorted】
- [leetcode] 1. Two Sum 解题报告
- LeetCode-1-Two Sum(C语言实现)
- LeetCode – Refresh – Two Sum II
- LeetCode "Range Sum Query 2D - Mutable"
- leetcode Two Sum hash