zoukankan      html  css  js  c++  java
  • 【20】【哈希表】数对和

    题目

    设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。
    示例 1:

    输入: nums = [5,6,5], target = 11
    输出: [[5,6]]
    示例 2:

    输入: nums = [5,6,5,6], target = 11
    输出: [[5,6],[5,6]]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/pairs-with-sum-lcci
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    收获

    ans.add(Arrays.asList(num, target - num));
    map.remove(target - num);
    map.put(num, map.getOrDefault(num, 0) + 1);

    class Solution {
        public List<List<Integer>> pairSums(int[] nums, int target) {
            //key:数组的元素;value:该元素出现的次数
            Map<Integer, Integer> map = new HashMap<>();
            
            List<List<Integer>> ans = new ArrayList<>();
            for (int num : nums) {
                Integer count = map.get(target - num);
                if (count != null) {
                    ans.add(Arrays.asList(num, target - num));
                    if (count == 1)
                        map.remove(target - num);
                    else
                        map.put(target - num, --count);
                } else 
                    map.put(num, map.getOrDefault(num, 0) + 1);
            }
            
            return ans;
        }
    }
    
    
    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    C语言第十一周作业
    C语言第十周作业
    C语言第九周编程作业
    C语言第八周编程作业
    C语言第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    【BZOJ1488】[HNOI2009]图的同构计数
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12416746.html
Copyright © 2011-2022 走看看