您的位置:首页 > 其它

LeetCode题库解答与分析——#1.两数之和TwoSum

2018-03-11 21:25 330 查看
4000

#1 两数之和 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.

示例:给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]初级思路:
双循环对每两个元素判定其相加等于target,时间复杂度O(n^2)
代码(C++):class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i=0,j=0;
for(i=0;i<nums.size();i++){
for(j=i+1;j<nums.size();j++){
if(nums[i]+nums[j]==target){
return {i,j};
}
}
}
}
};进阶思想:
建立散列表,对数组单循环,如果散列表中包含有等于(target-当前数字)的值,则直接返回散列表中存储的等于该值的数字的标号和当前标号,否则将(当前数字,当前数字标号)存入散列表
代码(Java):public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < numbers.length; i++) {
if (map.containsKey(target - numbers[i])) {
result[1] = i;
result[0] = map.get(target - numbers[i]);
return result;
}
map.put(numbers[i], i);
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode 算法
相关文章推荐