2 Sum-LintCode
来源:互联网 发布:韩顺平java视频有用吗 编辑:程序博客网 时间:2024/05/17 05:54
问题描述:
给一堆数组和一个目标值,在这堆数组里面找出两个数使得他们的和等于目标值。
解题思路:
思路一:
蛮力算法,两个循环,依次计算x + y = target ?是否成立,若成立则输出,否则继续,直到循环结束。时间复杂度:O(n^2)
思路二:
既然是需要找两个数使得他们的和等于目标值,
查找——第一反应是hash 或者 二分。
这里hash 会加快查找的速度。
首先第一步,用for循环扫描一遍我们的数组,并且hash表存储在扫到第i个数的时候,前面扫过的i-1个数已经存储在hash表之中。
这样,我们在扫描第i个元素的时候,在前i-1个元素中查找是否有某个元素与 当前第i个元素相加等于目标值。即查找前面i-1个元素中有没有值为:target-ai 的数。
时间复杂度:O(n),空间复杂度:O(n)
思路三:
双指针法则,前后两个指针。
首先将数组排序。
然后,设置两个指针,一前一后 pre 和 end。
依次比较 A[pre] + A[end] 与 target 值大小。
若 大于target,则 end向前移动;
若 小于target,则 pre向后移动 ;
若相等,则输出,结束。
若 pre == end 则结束。
思路二参考代码:
class Solution {public: /* * @param numbers : An array of Integer * @param target : target = numbers[index1] + numbers[index2] * @return : [index1+1, index2+1] (index1 < index2) */ vector<int> twoSum(vector<int> &nums, int target) { unordered_map<int, int> hash; vector<int> result; for (int i = 0; i < nums.size(); i++) { if (hash.find(target - nums[i]) != hash.end()) { result.push_back(hash[target - nums[i]] + 1); result.push_back(i + 1); return result; } hash[nums[i]] = i; } }};
参考资料:http://www.jiuzhang.com/problem/67/
0 0
- 2 Sum-LintCode
- lintcode:2sum
- lintcode(665)Range Sum Query 2D
- lintcode Range Sum Query 2D
- Lintcode - k sum II
- [LintCode]k Sum
- [LintCode]k Sum II
- lintcode:Continuous Subarray Sum
- lintcode Interval Sum
- lintcode:3 Sum Closest
- lintcode:3 Sum
- lintcode:Subarray Sum Closest
- [LintCode]Submatrix Sum
- [LintCode] Continuous Subarray Sum
- [Lintcode]Minimum Path Sum
- lintcode: Subarray Sum Closest
- lintcode:k Sum II
- lintcode:Combination Sum
- 密码学_chinese hacker
- Java Servlet学习笔记(四)Servlet客户端Http请求
- Java基础知识之IO(1)
- Machine Learning多变量梯度下降
- 互联网女皇”Mary Meeker 2015互联网趋势报告说了些什么
- 2 Sum-LintCode
- ZigZag Conversion - LeetCode 6
- View.inflate(Context,layout,null)中null的含义
- mysql基本语法
- 我是如何从勉强写冒泡成长到轻松get百度offer? (内有许多优质算法书籍介绍及推荐)
- 不使用virtual关键字 模拟虚函数来表现多态性
- java|android 使用socket.io-client连接nodejs websocket
- 错误 CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000
- android开发工具-SDK国内下载网址