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;}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!