Java:LeetCode-两数之和

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

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

翻译了一下英文的

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

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

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

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

int[] label = new int[2];

HashMap<Integer, Integer> hashMap = new HashMap<>();

for(int i=0;i<nums.length;i++) {

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

}

for(int i=0;i<nums.length;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;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容