[Algo] Find Pair with Given Sum
Posted xuanlu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Algo] Find Pair with Given Sum相关的知识,希望对你有一定的参考价值。
Given a list of positive integers nums
and an int target
, return indices of the two numbers such that they add up to a target - 30
.
Conditions:
- You will pick exactly 2 numbers.
- You cannot pick the same element twice.
- If you have muliple pairs, select the pair with the largest number.
Example 1:
Input: nums = [1, 10, 25, 35, 60], target = 90
Output: [2, 3]
Explanation:
nums[2] + nums[3] = 25 + 35 = 60 = 90 - 30
Example 2:
Input: nums = [20, 50, 40, 25, 30, 10], target = 90
Output: [1, 5]
Explanation:
nums[0] + nums[2] = 20 + 40 = 60 = 90 - 30
nums[1] + nums[5] = 50 + 10 = 60 = 90 - 30
You should return the pair with the largest number.
public static int[] getPairSum(int[] arr, int target) { int[] res = new int[]{-1, -1}; Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < arr.length; i++) { int num = target - arr[i] - 30; if (map.containsKey(num)) { int preIndex = map.get(num); if (res[0] == -1 && res[1] == -1 || i + preIndex > res[0] + res[1]) { res[0] = map.get(num); res[1] = i; } } else { map.put(arr[i], i); } } return res; }
以上是关于[Algo] Find Pair with Given Sum的主要内容,如果未能解决你的问题,请参考以下文章
719. Find K-th Smallest Pair Distance