leetcode编程题-twosum
题目描述
给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的
假设给出的数组中只存在唯一解
例如:
输入
[3,2,4],6
输出
[2,3]
javascript解法
function twoSum( numbers , target ) {
// write code here
for(let i =0;i<numbers.length;i++){
for(var j=numbers.length -1;j>0;j--){
if(numbers[i]>target)
{
continue;
}
else if(numbers[i]+numbers[j]== target){
return [i+1,j+1];
}
}
}
}
module.exports = {
twoSum : twoSum
};
C++解法
class Solution {
public:
vector<int> twoSum(vector<int> &num, int target) {
int n=num.size();
vector<int>v;
map<int,int>m;
for(int i=0;i<n;i++){
int a = num[i];
if(m.find(target-a)!=m.end()){
v.push_back((m.find(target-a)->second));
v.push_back(i+1);
break;
}
else
m[a]=i+1;
}
return v;
}
};
Java解法
import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int n = numbers.length;
int[] result = new int[2];
//map里面放 键为target-每个数的结果 值为下标
//每次放入的时候看是否包含 当前值
//有的话说明当前值和已包含的值下标的那个元素为需要的结果
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i=0;i<n;i++){
if(map.containsKey(numbers[i])){
result[0] = map.get(numbers[i])+1;
result[1] = i+1;
break;
}
else{
map.put(target - numbers[i], i);
}
}
return result;
}
}
python解法
class Solution:
def twoSum(self , numbers , target ):
# write code here
dict = {}
for i in range(len(numbers)):
temp = target - numbers[i]
if temp in dict:
return [dict[temp], i+1]
else:
dict[numbers[i]] = i+1