import java.util.Arrays;
import java.util.HashMap;
public class TwoSum {
public static void main(String[] args) {
int[] test = {1,2,3,4,5,6};
TwoSum twoSum = new TwoSum();
System.out.println(Arrays.toString(twoSum.twoSum(test,9)));
}
public int[] twoSum(int[] nums, int target) {
//两数之和,找出数组中是否有两个相加和为target的项,如果有,返回下标
//可以使用暴力法,两次遍历比较
//也可以使用hashmap,每次put时检索是否存在和为target的项
//建立hashmap
HashMap<Integer,Integer> hashMap = new HashMap<>();
//遍历数组,在往hashmap里put前,检索是否存在,如果存在直接返回,如果不存在,put元素
for (int i = 0; i < nums.length; i++) {
int num = target - nums[i];
//key存值,value存下标
if(hashMap.containsKey(num)){
return new int[]{hashMap.get(num),i};
}
hashMap.put(nums[i],i);
}
//遍历数组后仍不存在,则返回空
return null;
}
}
两数之和-----leetcode笔记
最新推荐文章于 2024-11-07 23:24:07 发布