zoukankan      html  css  js  c++  java
  • [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;
        }
     
  • 相关阅读:
    JavaScript 面向对象
    javascript中this的指向
    销售
    Java垃圾回收机制
    判断浏览器是否缩放
    pattern space and hold space of sed
    语言基础
    Python中PyQuery库的使用总结
    多个计数器在Vuex中的状态
    Sklearn
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12640385.html
Copyright © 2011-2022 走看看