题目描述:两数之和
代码实现:Github
Java代码
import java.util.HashMap;import java.util.Map;public class Solution {/*** 暴力破解法,遍历整个数组,两两相加,最后得到结果* 时间复杂度 O(n^2) 空间复杂度 O(1)* @param nums* @param target* @return*/public int[] Solution_01(int[] nums, int target) {int length = nums.length;for (int i = 0; i < length; ++i) {int first = nums[i];int j = i + 1;for (; j < length; ++j) {int second = nums[j];if (target == first + second) {return new int[]{i, j};}}}return new int[]{};}/*** 哈希表判断法,遍历一遍数组,每次判断目标值减去遍历到的值的差是否在哈希表中* 时间复杂度 O(n) 空间复杂度 O(n)* @param nums* @param target* @return*/public int[] Solution_02(int[] nums, int target) {int length = nums.length;Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < length; ++i) {if (map.containsKey(target - nums[i])) {return new int[] {i, map.get(target - nums[i])};}map.put(nums[i], i);}return new int[] {};}}
