题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
举例:给定数组 nums = [1,6,3,7],给定目标值:9,所返回应是6和3下标的数组形势也就是 [1,2]。
将数组中的每一对数字相加对比
使用冒泡遍历
public static int[] twoSum1(int[] nums, int target) { for (int i = 0; i < nums.length - 1; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[i] + nums[j] == target){ return new int[]{i,j}; } } } return null; }
public static int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int num = target - nums[i]; if (map.containsKey(nums[i])){ return new int[]{map.get(nums[i]),i}; } map.put(num,i); } return null; }
public static int[] twoSum2(int[] nums, int target) { Map<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int num = target - nums[i]; if (map.containsKey(num)){ return new int[]{map.get(num),i}; } map.put(nums[i],i); } return null; }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句