2024每日刷题(一零七)
Leetcode—2670. 找出不同元素数目差数组
哈希表实现代码
class Solution {
public:
vector<int> distinctDifferenceArray(vector<int>& nums) {
unordered_set<int> s;
int n = nums.size();
vector<int> diff(n + 1);
for(int i = n - 1; i >= 0; i--) {
s.insert(nums[i]);
diff[i] = s.size();
}
s.clear();
vector<int> ans(n);
for(int i = 0; i < n; i++) {
s.insert(nums[i]);
ans[i] = s.size() - diff[i + 1];
}
return ans;
}
};
运行结果
数组法实现代码
class Solution {
public:
vector<int> distinctDifferenceArray(vector<int>& nums) {
int n = nums.size();
constexpr int maxNum = 50;
vector<int> ans;
vector<int> prefix(maxNum + 1);
vector<int> suffix(maxNum + 1);
int prefixNum = 0, suffixNum = 0;
for(const int num: nums) {
// 记录不同元素的个数
if(++suffix[num] == 1) {
suffixNum++;
}
}
for(const int num: nums) {
// 记录不同元素个数的前缀
if(++prefix[num] == 1) {
prefixNum++;
}
// 记录不同元素个数的后缀
if(--suffix[num] == 0) {
suffixNum--;
}
ans.push_back(prefixNum - suffixNum);
}
return ans;
}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!