news 2026/4/30 12:12:35

启发式|前缀和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
启发式|前缀和

lc2424

单指针

用一个布尔数组标记已上传的视频,每次上传后更新当前连续上传前缀的最大长度,直接返回这个长度即可

class LUPrefix {
public:
int n;
bool * visited;
int ID;

LUPrefix(int n) {
this->n = n;
visited = new bool[n + 1];
for (int i = 0; i < n + 1; i ++){
visited[i] = false;
}
ID = 0;
}

void upload(int video) {
visited[video] = true;
while (ID + 1 <= n && visited[ID + 1] == true)
ID ++;

}

int longest() {
return ID;
}
};

按秩合并是启发式合并在并查集里的具体实现

按秩合并的“秩”(通常是树的高度或节点数)是启发式合并选择合并方向的核心依据,本质是通过让小树合并到大树下,避免并查集退化成链表,保证操作的时间复杂度接近常数


class DSU {

private:

vector<int> parent;

vector<int> rank;

public:

DSU(int n) {

parent.resize(n);

rank.resize(n, 1);

for (int i = 0; i < n; i++) parent[i] = i;

}

int find(int x) {

if (parent[x] != x) parent[x] = find(parent[x]);

return parent[x];

}

void unite(int x, int y) {

int fx = find(x), fy = find(y);

if (fx == fy) return;

if (rank[fx] < rank[fy]) parent[fx] = fy;

else {

parent[fy] = fx;

if (rank[fx] == rank[fy]) rank[fx]++;

}

}

};

lc1292

二维前缀和

预处理: sum[i + 1][j + 1] = sum[i + 1][j] + sum[i][j + 1] - sum[i][j] + mat[i][j];

求解: int t = sum[r2][c2] - sum[r2][c1] - sum[r1][c2] + sum[r1][c1];

二维前缀和快速计算矩阵内正方形子矩阵的和,遍历所有可能的正方形,找出不超过阈值的最大边长

class Solution {
public:
int maxSideLength(vector<vector<int>>& mat, int threshold)
{
vector<vector<int>> sum;
int m = mat.size(), n = mat[0].size();
sum.resize(m + 1, vector<int>(n + 1));
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
sum[i + 1][j + 1] = sum[i + 1][j] + sum[i][j + 1] - sum[i][j] + mat[i][j];
}
}
int mx=0;
for(int r1=0;r1<m;r1++)
{
for(int c1=0;c1<n;c1++)
{
for(int k=mx+1; r1+k<=m && c1+k<=n; k++)
{
int r2 = r1 + k, c2 = c1 + k;
int t = sum[r2][c2] - sum[r2][c1] - sum[r1][c2] + sum[r1][c1];
if(t <= threshold)
mx = k;
else
break;
}
}
}
return mx;
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:54:07

教育工作者必备:一键获取电子教材的终极解决方案

教育工作者必备&#xff1a;一键获取电子教材的终极解决方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 还在为寻找高质量电子教材而四处奔波吗&#xff1f;教…

作者头像 李华
网站建设 2026/5/1 9:39:16

Lenovo Legion Toolkit终极指南:从入门到精通完全教程

Lenovo Legion Toolkit终极指南&#xff1a;从入门到精通完全教程 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 还在为拯救…

作者头像 李华
网站建设 2026/5/1 10:04:13

MRIcroGL医学影像可视化:专业级3D渲染技术深度解析

MRIcroGL医学影像可视化&#xff1a;专业级3D渲染技术深度解析 【免费下载链接】MRIcroGL v1.2 GLSL volume rendering. Able to view NIfTI, DICOM, MGH, MHD, NRRD, AFNI format images. 项目地址: https://gitcode.com/gh_mirrors/mr/MRIcroGL MRIcroGL作为一款专业的…

作者头像 李华
网站建设 2026/5/1 10:51:45

DLSS Swapper技术深度解析:游戏性能调优与画质优化实战指南

DLSS Swapper技术深度解析&#xff1a;游戏性能调优与画质优化实战指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 想要在不升级硬件的情况下获得更流畅的游戏体验和更清晰的画质表现吗&#xff1f;DLSS Swapper作…

作者头像 李华
网站建设 2026/5/1 6:06:35

AMD锐龙深度调试工具:专业级硬件性能调优实战指南

AMD锐龙深度调试工具&#xff1a;专业级硬件性能调优实战指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcod…

作者头像 李华
网站建设 2026/5/1 6:11:25

Mem Reduct终极指南:3步快速提升电脑性能的内存优化工具

Mem Reduct终极指南&#xff1a;3步快速提升电脑性能的内存优化工具 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …

作者头像 李华