平台型网站建设,个人接广告的平台,上海公司注销的流程及需提供的材料2023,非主流图片在线制作LeetCode-2341. 数组能形成多少数对【哈希表#xff0c;计数】题目描述#xff1a;解题思路一#xff1a;哈希表#xff0c;将数组中的数加入哈希表中#xff0c;若有两个相同的数就记录下来#xff0c;并消去两个。最后只需遍历哈希表中置为1的个数即可。解题思路二计数】题目描述解题思路一哈希表将数组中的数加入哈希表中若有两个相同的数就记录下来并消去两个。最后只需遍历哈希表中置为1的个数即可。解题思路二优化是将a最后进行计算即a形成的数对数目等于每个数的个数除2下取整。然后b(剩下的整数数目)是n-2*a解题思路三0题目描述
给你一个下标从 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 https://leetcode.cn/problems/maximum-number-of-pairs-in-array/description/
解题思路一哈希表将数组中的数加入哈希表中若有两个相同的数就记录下来并消去两个。最后只需遍历哈希表中置为1的个数即可。
class Solution {
public:vectorint numberOfPairs(vectorint nums) {int nnums.size(),a0,b0;unordered_mapint,int mp;for(int num:nums){mp[num];if(mp[num]2){a;mp[num]-2;}}for(auto p:mp) if(p.second) b;return {a,b}; }
};时间复杂度O(n) 空间复杂度O(n)//哈希表
解题思路二优化是将a最后进行计算即a形成的数对数目等于每个数的个数除2下取整。然后b(剩下的整数数目)是n-2*a
class Solution {
public:vectorint numberOfPairs(vectorint nums) {int nnums.size(),a0;unordered_mapint,int mp;for(int num:nums) mp[num];for(auto p:mp) ap.second1;return {a,n-2*a};}
};时间复杂度O(n) 空间复杂度O(n)//哈希表
解题思路三0