标签:
网址: https://leetcode.com/problems/two-sum/
题意:
给一组数,给一个目标值.
这组数里有2个数的和等于目标值,求出这两个数的下标.
提示:
下标从1开始
明确一定有答案
分析:
一定有答案,从而不用对特殊情况进行考虑.
比如:
(1)一组数的长度小于2.
(2)没有答案
(3)和值等于2个相同下标的数的和
解法:
想法1:
排序,2个index,1个从前,1个从后,通过和与目标值比较.
但最终求得是下标,所以额外空间存下标与排序同时显得很麻烦.
想法2:
这组数相对散列,把value和key倒置,用基数排序无疑更好.
因为对值的范围不明,map就是一个很好的选择.
C++中的unordered_map是无序map,同时也是最高效的map
利用它,很快得到一个不错的结果
Java中没有unordered_map,无序map用HashMap.
代码:
https://github.com/LiLane/leetcode/blob/master/c%2B%2B/001-TwoSum-201504151556.cpp
https://github.com/LiLane/leetcode/blob/master/java/001-TwoSum-201504272020.java
标签:
原文地址:http://blog.csdn.net/lane_l/article/details/45314699