[1]两数之和
https://www.bilibili.com/video/BV1xa411A76q?spm_id_from=333.337.search-card.all.click&vd_source=a8983e35207c15f4e63cacbc5be7cf9a
A.暴力法
a.图解
b.伪代码
c.源码
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
int sum = nums[i] + nums[j];
if (sum == target) {
result[0] = i;
result[1] = j;
return result;
}
}
}
return result;
}
}
B.哈希表法
a.图解
b.伪代码
c.源码
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i);
}
for (int j = 0; j < nums.length; j++) {
int diff = target - nums[j];
if (map.containsKey(diff) && map.get(diff) != j) {
result[0] = j;
result[1] = map.get(diff);
return result;
}
}
return result;
}
}