LeetCode 面试题 16.24.数对和

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

示例 1:

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

输出:[[5,6]]

示例 2:

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

输出:[[5,6],[5,6]]

提示:

nums.length <= 100000

-105^55 <= nums[i], target <= 105^55

遍历nums,用哈希表记录下来遍历到的元素的出现次数,后边再出现时,就有了一对数对:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> pairSums(vector<int>& nums, int target) {
        vector<vector<int>> ans;
        unordered_map<int, int> cnt;
        for (int i : nums) {
            if (cnt[target - i] == 0) {
                ++cnt[i];
            } else {
                ans.push_back({i, target - i});
                --cnt[target - i];
            }
        }
        return ans;
    }
};

如果nums的长度为n,nums中元素的种类数为m,则此算法时间复杂度为O(n),空间复杂度为O(m)。

相关推荐
不会编程的小寒2 小时前
数据结构 2.0
数据结构·算法
专注VB编程开发20年2 小时前
图片转矢量图(提取轮廓线条)Potrace:一个基于多边形的位图轮廓矢量化算法(translation)
算法·图片转矢量
Dream it possible!2 小时前
LeetCode 面试经典 150_二叉树层次遍历_二叉树的层平均值(82_637_C++_简单)
c++·leetcode·面试·二叉树
小羊失眠啦.2 小时前
Rust核心库(core)深度解析:无依赖基石的设计与实践
数据库·算法·rust
Wenhao.2 小时前
LeetCode Hot100 每日温度
数据结构·算法·leetcode·golang
吃着火锅x唱着歌3 小时前
LeetCode 1679.K和数对的最大数目
算法·leetcode·职场和发展
im_AMBER3 小时前
Leetcode 57
笔记·学习·算法·leetcode
im_AMBER3 小时前
Leetcode 58 | 附:滑动窗口题单
笔记·学习·算法·leetcode
sin_hielo3 小时前
leetcode 2154
算法·leetcode