6141. 合并相似的物品
哈希+枚举
class Solution {
public:
vector<vector<int>> mergeSimilarItems(vector<vector<int>>& items1, vector<vector<int>>& items2) {
map<int,int>mp;
for(auto x:items1)
{
mp[x[0]]+=x[1];
}
for(auto x:items2)
{
mp[x[0]]+=x[1];
}
vector<vector<int>>res;
for(auto x:mp)
{
res.push_back({x.first,x.second});
}
return res;
}
};
6142. 统计坏数对的数目
class Solution {
public:
long long countBadPairs(vector<int>& nums) {
long long n=nums.size();
long long res=(n-1)*n/2ll;
unordered_map<long long,long long>mp;
for(int i=0;i<nums.size();i++)
{
mp[nums[i]-i]++;
}
for(auto x:mp)
{
if(x.second>1)
{
long long m=x.second;
res-=m*(m-1)/2ll;
}
}
return res;
}
};
6174. 任务调度器 II
class Solution {
public:
long long taskSchedulerII(vector<int>& tasks, int space) {
unordered_map<long long,long long>mp;
int n=tasks.size();
long long day=1;
for(int i=0;i<n;i++)
{
if(day-mp[tasks[i]]>space||mp[tasks[i]]==0)
{
mp[tasks[i]]=day;
// cout<<day<<endl;
day++;
}
else day+=space+mp[tasks[i]]-day+1,mp[tasks[i]]=day++;
}
long long res=0;
for(auto x:mp)
{
res=max(res,x.second);
}
return res;
}
};
6144. 将数组排序的最少替换次数
class Solution {
public:
long long minimumReplacement(vector<int>& nums) {
long long res=0;
int n=nums.size();
int minv=nums[n-1];
for(int i=n-2;i>=0;i--)
{
int k=(nums[i]-1)/minv;
res+=k;
minv=nums[i]/(k+1);
}
return res;
}
};