Java:LeetCode-两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

翻译了一下英文的

简单的思路就是遍历两遍数组,找到两个值相加, 很明显,这是n2的复杂度

另外一个简单的思路就是用空间换时间,由于告诉你不会重复, 不用set用hashmap就好了

key为值,value为下标。时间复杂度O(N)。

public static int[] twonumadd(int[] nums, int targetnum) {

int[] label = new int[2];

HashMap hashMap = new HashMap<>();

for(int i=0;i

hashMap.put(nums[i], i);

}

for(int i=0;i

if(hashMap.containsKey(targetnum-nums[i])&&hashMap.get(targetnum-nums[i])!=i) {

label[0] = i;

label[1] = hashMap.get(target-nums[i]);

break;

}

}

return label;

}

你可能感兴趣的:(Java:LeetCode-两数之和)