跳到主要内容

2341.数组能形成多少数对

链接:2341.数组能形成多少数对
难度:Easy
标签:数组、哈希表、计数
简介:返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答案,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。

题解 1 - cpp

  • 编辑时间:2023-02-16
  • 执行用时:4ms
  • 内存消耗:8.9MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
vector<int> numberOfPairs(vector<int>& nums) {
int list[105] = {0};
vector<int> res(2, 0);
for (auto &num : nums) {
list[num] ^= 1;
if (list[num] == 0) res[0]++;
}
for (int i = 0; i < 105; i++) res[1] += list[i];
return res;
}
};

题解 2 - python

  • 编辑时间:2023-02-16
  • 执行用时:36ms
  • 内存消耗:14.9MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def numberOfPairs(self, nums: List[int]) -> List[int]:
l = [0] * 105
res = [0] * 2
for num in nums:
l[num] ^= 1
if l[num] == 0:
res[0] += 1
for i in range(105):
res[1] += l[i]
return res

题解 3 - rust

  • 编辑时间:2023-02-16
  • 内存消耗:2.1MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn number_of_pairs(nums: Vec<i32>) -> Vec<i32> {
let mut list = [0; 105];
let mut ans = vec![0; 2];
for num in nums {
let num = num as usize;
list[num] ^= 1;
if list[num] == 0 {
ans[0] += 1;
}
}
for i in 0..105 {
ans[1] += list[i];
}
ans
}
}