P10-两数之和-无序数组
//两数之和 /* * 给定一个整数数组,从数组中找出两个数满足相加之和等于目标数target * 假设每个输入只对应唯一的答案,而且不可以重复使用相同的元素。 * 返回两数的下标值,以数组形式返回 * */ public class P10 { public static void main(String[] args) { System.out.println(Arrays.toString(solution(new int[]{1, 2, 3, 4, 5, 6}, 10))); } public static int[] solution(int[] nums, int target) { //暴力,时间复杂度O(n平方),空间复杂度O(1) // 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}; // } // } // } //优化,时间复杂度O(n) Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if(map.containsKey(target - nums[i])){ return new int[]{map.get(target - nums[i]), i}; } map.put(nums[i], i); } return new int[0]; } }