贪心|=转换
2026/8/28 0:19:25 网站建设 项目流程

lc

lc992

妙妙题😋

等于 转 两至多作差win(k)-win(k-1)

class Solution {

public:

int subarraysWithKDistinct(vector<int>& nums, int k)

{

int n=nums.size();

auto win=[&](int k)->int

{

int l=0,ret=0;

unordered_map<int,int> hash;

for(int r=0;r<n;)

{

hash[nums[r]]++;

while((int)hash.size()>k)

{

if(--hash[nums[l]]==0)

hash.erase(nums[l]);

l++;

}

ret+=(r-l);

r++;

}

return ret;

};

return win(k)-win(k-1);

}

};

lc1580

先算出仓库每个位置能装的最大高度(左右两边推min的限制里取宽松的max)

把箱子和这些高度都排好序,小箱子挨个配小高度,能配多少算多少

class Solution {
public:
int maxBoxesInWarehouse(vector<int>& b, vector<int>& w)

{
int n = w.size();
vector<int> l(n), r(n), v(n);
l[0] = w[0];
for (int i = 1; i < n; ++i)

l[i] = min(l[i-1], w[i]);
r[n-1] = w[n-1];
for (int i = n-2; i >= 0; --i)

r[i] = min(r[i+1], w[i]);


for (int i = 0; i < n; ++i)

v[i] = max(l[i], r[i]);


sort(b.begin(), b.end());
sort(v.begin(), v.end());
int i = 0, c = 0;
for (int h : v)

if (i < b.size() && b[i] <= h) i++, c++;
return c;
}
};

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询