算法两数相加
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
大家可以看一下,下面的方法,如果有不对的地方,可以留言哈~
Multimap<Integer, Integer> map = ArrayListMultimap.create(); for (int i = 0; i < nums.length; i++) { map.put(nums[i], i); } for (Integer num : map.keySet()) { if (map.containsKey(target - num)) { if (num == (target - num) && map.get(num).size() > 1) { List<Integer> lists = ((ArrayListMultimap<Integer, Integer>) map).get(num); int[] a = new int[]{lists.get(0), lists.get(1)}; for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } break; } if (num != (target - num)) { List<Integer> numLists = ((ArrayListMultimap<Integer, Integer>) map).get(num); List<Integer> lists = ((ArrayListMultimap<Integer, Integer>) map).get(target - num); int a[] = new int[]{numLists.get(0), lists.get(0)}; System.out.println(a.length); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } break; } } }