当前位置: 首页 > news >正文

【2341. 数组能形成多少数对】

来源:力扣(LeetCode)

描述:

给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤:

  • nums 选出 两个 相等的 整数
  • nums 中移除这两个整数,形成一个 数对

请你在 nums 上多次执行此操作直到无法继续执行。

返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答案,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。

示例 1:

输入:nums = [1,3,2,1,3,2,2]
输出:[3,1]
解释:
nums[0] 和 nums[3] 形成一个数对,并从 nums 中移除,nums = [3,2,3,2,2] 。
nums[0] 和 nums[2] 形成一个数对,并从 nums 中移除,nums = [2,2,2] 。
nums[0] 和 nums[1] 形成一个数对,并从 nums 中移除,nums = [2] 。
无法形成更多数对。总共形成 3 个数对,nums 中剩下 1 个数字。

示例 2:

输入:nums = [1,1]
输出:[1,0]
解释:nums[0] 和 nums[1] 形成一个数对,并从 nums 中移除,nums = [] 。
无法形成更多数对。总共形成 1 个数对,nums 中剩下 0 个数字。

示例 3:

输入:nums = [0]
输出:[0,1]
解释:无法形成数对,nums 中剩下 1 个数字。

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 100

方法:哈希表

思路

  遍历一次数组,用一个哈希表保存元素个数的奇偶性,偶数为 false,奇数则为 true。每遇到一个元素,则将奇偶性取反,若取反完后为偶数个,则表明在上次偶数个之后又遇到了两个该元素,可以形成一个数对。最后返回一个数组,第一个元素是数对数,第二个元素是数组长度减去数对数的两倍。

代码:

class Solution {
public:vector<int> numberOfPairs(vector<int>& nums) {unordered_map<int, bool> cnt;int res = 0;for (int num : nums) {if (cnt.count(num)) {cnt[num] = !cnt[num];} else {cnt[num] = true;}if (!cnt[num]) {res++;}}return {res, (int)nums.size() - 2 * res};}
};

执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:8.9 MB, 在所有 C++ 提交中击败了57.03%的用户
复杂度分析
时间复杂度:O(n),其中 n 是数组的长度。需要遍历一次数组。
空间复杂度:O(n)。哈希表中最多保存 n 个元素。
author:LeetCode-Solution

http://www.lryc.cn/news/9030.html

相关文章:

  • [TPAMI‘21] Heatmap Regression via Randomized Rounding
  • pytorch下tensorboard使用[远程服务器]
  • CentOS下安装Nginx的详细步骤
  • CSS编码规范
  • Linux下makefile 编译项目
  • Linux磁盘查看,使用(分区、格式化、挂载)
  • 走进WebGL
  • Unity 中 Awake 和 Start 时机与 GameObject的关系
  • 1月份 GameFi 行业报告
  • JVM - 调优
  • flask配置https协议
  • Springboot 我随手封装了一个万能的导出excel工具,传什么都能导出
  • 【Linux详解】——进程控制(创建、终止、等待、替换)
  • HummerRisk V0.9.1:操作审计增加百度云,增加主机检测规则及多处优化
  • Rust入门(十六):手写web服务器和线程池
  • 数据结构——第二章 线性表(1)——顺序结构
  • YOLO 格式数据集制作
  • 基于linux内核的驱动开发
  • 找不到工作的测试员一大把,大厂却招不到优秀软件测试员?高薪难寻测试工程师。
  • buuctf Basic
  • 赛狐ERP|亚马逊产品缺货怎么办?该如何补救?
  • 《Elasticsearch源码解读与优化实战》张超-读书笔记
  • 编码踩坑——运行时报错java.lang.NoSuchMethodError / 同名类加载问题 / 双亲委派【建议收藏】
  • 软件测试选Python还是Java?
  • “2023数据安全智能化中国行”活动,开幕即高能
  • 机器人操作规划——Deep Visual Foresight for Planning Robot Motion(2017 ICRA)
  • go 连接redis集群
  • LeetCode 146. LRU 缓存
  • 【mac】在m2 mbp上通过Parallels Desktop安装ubuntu22.04
  • C++类和对象,初见类