LeetCode 1679.K和数对的最大数目

给你一个整数数组 nums 和一个整数 k 。

每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。

返回你可以对数组执行的最大操作数。

示例 1:

输入:nums = 1,2,3,4, k = 5

输出:2

解释:开始时 nums = 1,2,3,4

  • 移出 1 和 4 ,之后 nums = 2,3
  • 移出 2 和 3 ,之后 nums = \[\]
    不再有和为 5 的数对,因此最多执行 2 次操作。
    示例 2:

输入:nums = 3,1,3,4,3, k = 6

输出:1

解释:开始时 nums = 3,1,3,4,3

  • 移出前两个 3 ,之后nums = 1,4,3
    不再有和为 6 的数对,因此最多执行 1 次操作。

提示:

1 <= nums.length <= 10 5 ^5 5

1 <= numsi <= 10 9 ^9 9

1 <= k <= 10 9 ^9 9

枚举nums,记录下当前数字的出现次数,如果之前出现过,就增加一次操作次数:

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

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

相关推荐
阳明山水34 分钟前
TimesFM与Moirai MoE零样本预测解析
人工智能·深度学习·算法·机器学习·架构
铅笔侠_小龙虾1 小时前
Rust 学习(2)-变量、常量与 shadowing
学习·算法·rust
AI科技星1 小时前
基于全域数学公理体系的三元极值题最简求解法【乖乖数学】
线性代数·算法·游戏·决策树·机器学习·乖乖数学·全域数学
恣逍信点1 小时前
《凌微经》通俗解读——哲学第一因
学习·职场和发展·创业创新·学习方法·业界资讯·交友·哲学
大鱼>1 小时前
宠物异常行为预警系统:边缘计算与实时检测
人工智能·深度学习·算法·iot·宠物
apcipot_rain2 小时前
某双非机试真题
算法
米尔的可达鸭3 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
tachibana23 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹3 小时前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
大鱼>3 小时前
宠物活动轨迹追踪系统:GPS/BDS+UWB+BLE多定位融合方案
人工智能·深度学习·算法·iot·宠物