01.两数之和
class Solution {
public int[] twoSum(int[] nums, int target) {
// 暴力法
for(int i=0; i<nums.length;i++) {
for(int j=i+1;j<nums.length;j++) {
if (nums[i]+nums[j] == target) {
return new int[]{i,j};
}
}
}
return null;
}
}
// 时间复杂度O(n2),空间复杂度O(1)
思路:空间换时间
算法:能快速寻找数组中的是否存在目标元素,如果存在,需要返回它的索引---哈希表(key:元素,value:元素索引)
class Solution {
public int[] twoSum(int[] nums, int target) {
// 方法描述 空间换时间,只做一次循环
// 定义一个HashMap对象
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
for(int i=0; i<nums.length;i++) {
if (hm.containsKey(target-nums[i])) {
return new int[] {hm.get(target-nums[i]),i};
}
hm.put(nums[i], i);
}
return null;
}
}
// 时间复杂度o(n),空间复杂度O(n)
浙公网安备 33010602011771号