2341. 数组能形成多少数对 【模拟】
题目
给你一个下标从 0 开始的整数数组 nums
。在一步操作中,你可以执行以下步骤:
- 从
nums
选出 两个 相等的 整数 - 从
nums
中移除这两个整数,形成一个 数对
请你在 nums
上多次执行此操作直到无法继续执行。
返回一个下标从 0 开始、长度为 2
的整数数组 answer
作为答案,其中 answer[0]
是形成的数对数目,answer[1]
是对 nums
尽可能执行上述操作后剩下的整数数目。
难度:简单
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 100
题解
按照题目模拟即可。
class Solution {
public int[] numberOfPairs(int[] nums) {
int count = 0, surplus = 0;
HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>(10);
for (int num : nums) {
hashMap.put(num, hashMap.getOrDefault(num, 0) + 1);
}
for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
if (entry.getValue() % 2 != 0) {
surplus++;
}
count += entry.getValue() / 2;
}
return new int[]{count, surplus};
}
}
本题数据量不大,更快的做法是用数组代替HashMap计数去重。
复杂度分析
- 时间复杂度:O(N)
- 空间复杂度:O(N)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人