c++:
//O(n) 利用哈希map来寻找某元素
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
vector<int> v;
for(int i=0; i<nums.size(); i++) {
m[nums[i]] = i;
}
for(int i=0; i<nums.size(); i++) {
int temp = target - nums[i];
if(m.count(temp) && m[temp] != i) {
v.push_back(i);
v.push_back(m[temp]);
return v;
}
}
}
};
java:
//使用哈希map查找元素,降低时间复杂度为O(n)
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> m = new HashMap();
int result[] = new int[2];
for(int i=0; i<nums.length; i++) {
m.put(nums[i], i);
}
for(int i=0; i<nums.length; i++) {
int diff = target - nums[i];
if(m.get(diff) != null && m.get(diff) != (Integer)i) {
result[0] = i;
result[1] = m.get(diff);
break;
}
}
return result;
}
}