这个题目的问题是传入两个参数,第一个参数是一个数组,第二个是一个数字,如果数组中有两个数字相加等于第二个参数则将这两个数字组成一个新的数组返回。
不得不说这个是简单里面最简单的,就是说老师说的冒泡排序,用两重循环暴力解决,答案也成功的被accepted,但是看到接受的标志有红色的样式就知道肯定说明了不是好的算法,过几天看完这三本书开始看算法书,基础不好只能看答案来看看自己哪里想错了,但是其实并没有说哪里错误,只是我太不熟悉java的基础库,在java的hashmap中有一个containkey方法可以使得不遍历也能知道是否包含其中一个数字。附上代码:
public int[] twoSum(int[] nums, int target) { Mapmap = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}