news 2026/4/18 9:13:00

前后缀预处理|二分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前后缀预处理|二分

lc3488

前后各加一个哨兵 解决边界情况

hash分组后 二分query

class Solution {
public:
vector<int> solveQueries(vector<int>& nums, vector<int>& queries) {
unordered_map<int, vector<int>> indices;
for (int i = 0; i < nums.size(); i++)
indices[nums[i]].push_back(i);

int n = nums.size();
for (auto& [_, p] : indices) {
// 前后各加一个哨兵
int i0 = p[0];
p.insert(p.begin(), p.back() - n);
p.push_back(i0 + n);
}

for (int& i : queries) { // 注意这里是引用
auto& p = indices[nums[i]];
if (p.size() == 3) {
i = -1;
} else {
int j = ranges::lower_bound(p, i) - p.begin(); //找到此位置后 取最小
i = min(i - p[j - 1], p[j + 1] - i);
}
}
return queries;
}
};

前后缀 预处理记录 o n

class Solution {
public:
vector<int> solveQueries(vector<int>& nums, vector<int>& queries)

{
int n = nums.size();
vector<int> left(n), right(n);
unordered_map<int, int> pos;
for (int i = -n; i < n; i++) {
if (i >= 0) {
int j = pos[nums[i]];
left[i] = j;
// 对于左边的 j 来说,它的 right 就是 i
if (j >= 0) {
right[j] = i;
} else {
right[j + n] = i + n;
}
}
pos[nums[(i + n) % n]] = i;
}

for (int& i : queries) {
int l = left[i];
i = i - l == n ? -1 :min(i - l, right[i] - i);
}
return queries;
}
};

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

unet person image cartoon compound能否做动画帧处理?视频应用试探

unet person image cartoon compound能否做动画帧处理&#xff1f;视频应用试探 1. 功能概述 unet person image cartoon compound人像卡通化工具&#xff0c;由科哥基于阿里达摩院ModelScope平台的DCT-Net模型构建&#xff0c;核心功能是将真实人物照片自动转换为风格统一的…

作者头像 李华
网站建设 2026/4/18 6:30:21

3步搞定!让黑苹果配置像组装宜家家具一样简单

3步搞定&#xff01;让黑苹果配置像组装宜家家具一样简单 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾面对满屏的代码和驱动手足无措&…

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

高效捕获网页媒体资源:猫抓工具的全方位应用指南

高效捕获网页媒体资源&#xff1a;猫抓工具的全方位应用指南 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&#xff08;Cat-Catch&#xff09;是一款专业的浏览器扩展&#xff0c;能够自动检测…

作者头像 李华
网站建设 2026/4/16 19:49:26

突破实时3D渲染瓶颈:XV3DGS-UEPlugin全攻略

突破实时3D渲染瓶颈&#xff1a;XV3DGS-UEPlugin全攻略 【免费下载链接】XV3DGS-UEPlugin 项目地址: https://gitcode.com/gh_mirrors/xv/XV3DGS-UEPlugin XV3DGS-UEPlugin是一款基于3D高斯模型技术的虚幻引擎5插件&#xff0c;能够直接从照片或视频重建高质量3D场景并…

作者头像 李华
网站建设 2026/3/24 5:57:35

软件工具高效使用全攻略:IDM试用期管理实用技巧

软件工具高效使用全攻略&#xff1a;IDM试用期管理实用技巧 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 本文将系统介绍一款针对IDM下载管理器的实用工具&…

作者头像 李华
网站建设 2026/3/25 13:44:21

英文Prompt实现万物分割|sam3模型镜像快速上手教程

英文Prompt实现万物分割&#xff5c;sam3模型镜像快速上手教程 你有没有试过&#xff0c;只输入“一只橘猫坐在窗台上”&#xff0c;就自动把图中那只猫精准抠出来&#xff1f;不是靠画框、不是靠点选&#xff0c;而是靠一句话——这不再是科幻&#xff0c;而是 SAM3 模型正在…

作者头像 李华