当前位置: 首页 > news >正文

滑窗|贪心

 

 

lc17.08

pair按身高升序、相同时体重降序排序

结果是找体重序列的最长递增子序列长度

 

核心:转化为二维最长递增子序列问题求解


        vector<int> dp;
for (auto& p : hw) {
int w = p.second;
auto it = lower_bound(dp.begin(), dp.end(), w);
if (it == dp.end()) {
dp.push_back(w);
} else {
*it = w;
}
}

class Solution {
public:
int bestSeqAtIndex(vector<int>& height, vector<int>& weight)

{
vector<pair<int, int>> hw;
int n = height.size();
for (int i = 0; i < n; ++i)

     {
hw.push_back({height[i], weight[i]});
}
// 先按身高升序排序,身高相同按体重降序排序
sort(hw.begin(), hw.end(), [](const pair<int, int>& a, const pair<int, int>& b) {
if (a.first == b.first) {
return a.second > b.second;
}
return a.first < b.first;
});


// 现在问题转化为在 weight 序列中找最长递增子序列的长度
vector<int> dp;
for (auto& p : hw)

     {
int w = p.second;
auto it = lower_bound(dp.begin(), dp.end(), w);
if (it == dp.end())

           {
dp.push_back(w);
}

            else

            {
*it = w;  //?
}
}

return dp.size();
}
};

 

 

lc17.09

微调lc264. 丑数

res[i] = min(min(n7, n3), n5);//填最小

if (res[i] == n7) a++; //每种因子维护自己的下一个

if (res[i] == n3) b++;
if (res[i] == n5) c++;

class Solution {
public:
int getKthMagicNumber(int k)
{
int a = 0, b = 0, c = 0;
int res[k];
res[0] = 1;

for(int i = 1; i < k; i++)
{
int n7 = res[a] * 7, n3 = res[b] * 3, n5 = res[c] * 5;

res[i] = min(min(n7, n3), n5);//填最小

if (res[i] == n7) a++; //每种维护自己的下一个
if (res[i] == n3) b++;
if (res[i] == n5) c++;
}
return res[k-1];
}
};

 

lc17.18

class Solution

{
public:
vector<int> shortestSeq(vector<int>& big, vector<int>& small) {
unordered_map<int, int> t;
for (auto s : small) t[s]++;

unordered_map<int, int> w;
int req = t.size(), form = 0;
int l = 0, r = 0, n = big.size();
int minL = INT_MAX;
vector<int> res;

while (r < n)

{
int num = big[r];
if (t.count(num))

         {
w[num]++;
if (w[num] == t[num]) form++;
}

while (l <= r && form == req)

        {
int currL = r - l + 1;
if (currL < minL) {
minL = currL;
res = {l, r};
}


int leftNum = big[l];
if (t.count(leftNum))

                {
if (w[leftNum] == t[leftNum])       

                               form--;


w[leftNum]--;
}
l++;
}
r++;
}
return res;
}
};

 

http://www.dtcms.com/a/332642.html

相关文章:

  • Sonatype Nexus Repository Manager docker版本安装
  • [优选算法专题二滑动窗口——无重复字符的最长子串]
  • Linux应用层开发--线程
  • react性能优化之useRef和useState
  • Nginx性能优化与安全配置:打造高性能Web服务器
  • Unity:PlayerPrefs笔记
  • 标准电子邮件地址格式(RFC 5322 里的 mailbox 语法)
  • ABAP : 内表/工作区转JSON
  • Prometheus 监控 Kubernetes Cluster 最新极简教程
  • FreeRTOS多核支持
  • 从根本上解决MAC权限问题(关闭sip)
  • 汽车后雾灯色度难达标?OAS 软件精准解决破瓶颈
  • 图论Day3学习心得
  • Chrome插件开发实战:从架构到发布全流程
  • Docker Compose部署Clickhouse最新版
  • 【软件设计模式】工厂方法与抽象工厂
  • 关于截屏时实现游戏暂停以及本地和上线不同步问题
  • pycharm2025导入anaconda创建的各个AI环境
  • C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏
  • 医院网络安全重保方案
  • 用 KNN 算法解锁分类的奥秘:从电影类型到鸢尾花开
  • 从电影分类到鸢尾花识别:KNN 算法实战指南
  • @[TOC](计算机是如何⼯作的) JavaEE==网站开发
  • MySQL 关键字总结,并结合 SQL 类型(DDL / DML / DQL / DCL / TCL) 说明每类关键字的作用、使用场景和示例
  • 华为实验综合小练习
  • Android RxJava变换操作符详解
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 9.对象介绍
  • iOS App TF 上架多工具协作实战,一次高效的应用内测分发流程
  • 【数据结构初阶】--排序(三):冒泡排序、快速排序