第390场 LeetCode 周赛题解

news2024/9/28 3:30:00

A 每个字符最多出现两次的最长子字符串

在这里插入图片描述

滑动窗口:枚举窗口的左边界,尽可能右移窗口的右边界。 (当然也可以暴力枚举)

class Solution {
public:
    int maximumLengthSubstring(string s) {
        vector<int> cnt(26);
        int res = 0;
        for (int l = 0, r = -1, n = s.size();; cnt[s[l++] - 'a']--) {
            while (r + 1 < n && cnt[s[r + 1] - 'a'] + 1 <= 2)
                cnt[s[++r] - 'a']++;
            res = max(res, r - l + 1);
            if (r == n - 1)
                break;
        }
        return res;
    }
};

B 执行操作使数据元素之和大于等于 K

在这里插入图片描述

枚举:容易知道存在一种方案:“先通过第一种操作将数组从 [ 1 ] [1] [1] 变为 [ i ] [i] [i] ,再通过第二种操作让数组和不小于 k k k” 可以让操作数最少。枚举 i i i 以计算最小操作数

class Solution {
public:
    int minOperations(int k) {
        int res = INT32_MAX;
        for (int i = 1; i <= k; i++)
            res = min(res, i - 1 + (k - 1) / i);
        return res;
    }
};

C 最高频率的 ID

在这里插入图片描述
在这里插入图片描述

最大堆+哈希:用最大堆维护当前频率最高的ID,用哈希表记录各ID的最新频率

class Solution {
public:
    using ll = long long;

    vector<long long> mostFrequentIDs(vector<int> &nums, vector<int> &freq) {
        priority_queue<pair<ll, int>> heap;//(freq,id)
        unordered_map<int, ll> f;
        vector<ll> res;
        for (int i = 0; i < nums.size(); i++) {
            f[nums[i]] += freq[i];
            heap.emplace(f[nums[i]], nums[i]);
            while (f[heap.top().second] != heap.top().first)
                heap.pop();
            res.push_back(heap.top().first);
        }
        return res;
    }
};

D 最长公共后缀查询

在这里插入图片描述
在这里插入图片描述

字典树:遍历 wordsContainer 中的字符串,并将其按后缀插入字典树,同时更新字典树插入路径上的标记。然后遍历 wordsQuery ,在字典树上查询匹配的最长后缀的标记

class Solution {
public:
    vector<int> stringIndices(vector<string> &wordsContainer, vector<string> &wordsQuery) {
        trie tree;
        for (int i = 0; i < wordsContainer.size(); i++)
            tree.insert(wordsContainer[i], i, wordsContainer[i].size());
        vector<int> res;
        for (auto &q: wordsQuery) 
            res.push_back(tree.find(q));
        return res;
    }

    class trie {//字典树
    public:
        trie *next[26];
        int ind;//标记
        int mn;//wordsContainer[ind]的长度

        trie() {
            for (int i = 0; i < 26; i++)
                next[i] = nullptr;
            ind = -1;
            mn = 0;
        }

        void insert(string &s, int id, int len_i) {
            trie *cur = this;
            if (cur->ind == -1 || cur->mn > len_i) {//公共后缀为空的情况
                cur->ind = id;
                cur->mn = len_i;
            }
            for (auto i = s.rbegin(); i != s.rend(); i++) {
                if (!cur->next[*i - 'a'])
                    cur->next[*i - 'a'] = new trie();
                cur = cur->next[*i - 'a'];
                if (cur->ind == -1 || cur->mn > len_i) {//更新标记
                    cur->ind = id;
                    cur->mn = len_i;
                }
            }
        }

        int find(string &s) {
            trie *cur = this;
            for (auto i = s.rbegin(); i != s.rend(); i++) {
                if (!cur->next[*i - 'a'])
                    break;
                cur = cur->next[*i - 'a'];
            }
            return cur->ind;
        }
    };
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1541677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自媒体洗稿软件文心一言api洗稿软件介绍

大家好&#xff0c;我是淘小白~ 这几天给一个客户写了一个文心一言api洗稿的软件。 一、客户要求&#xff1a; 1、采集头条文章&#xff08;软件内置可采集头条文章网址、微信文章网址、搜狐文章网址&#xff09; 2、调用文心一言api 3、多线程并发 4、逐段改写文章 5、…

MSDS认证流程与亚马逊MSDS注意事项

MSDS认证流程与亚马逊MSDS注意事项 一、MSDS认证流程概述 MSDS&#xff0c;即物质安全数据表&#xff08;Material Safety Data Sheet&#xff09;&#xff0c;是一份详细描述化学物质或制剂的物理、化学、毒性、环保和处置等方面信息的文件。对于在亚马逊等电商平台上销售的化…

覃超老师 算法面试通关40讲

教程介绍 无论是阿里巴巴、腾讯、百度这些国内一线互联网企业&#xff0c;还是 Google、Facebook、Airbnb 等硅谷知名互联网公司&#xff0c;在招聘工程师的过程中&#xff0c;对算法和数据结构能力的考察都是重中之重。本课程以帮助求职者在短时间内掌握面试中最常见的算法与…

基于SpringBoot+Vue健身房管理系统(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

探索超净实验室:高纯电子级PFA洗瓶特氟龙材质清洗瓶的特性

PFA洗瓶&#xff0c;实验中常用的清洗工具之一&#xff0c;是一个带有弯曲管状喷嘴的柔性瓶子&#xff0c;因此可以用手挤压瓶身以产生压力&#xff0c;迫使瓶内液体通过塑料管以单滴或窄流的形式流到需要清洁的表面。 ​ 由于需要多次挤压&#xff0c;瓶体要有良好的回弹性和…

jmeter链路压测

比如登录后返回token&#xff0c;业务打印上传的操作需要用到token 线程组中添加登录请求&#xff0c;并执行 1、添加登录并执行&#xff0c;查看结果 2、结果树中下拉选择正则表达式&#xff0c;将token参数和值复制粘贴到下方&#xff0c;将token值改为(.*?)&#xff0…

P - Beat

题目分析 1.看数据范围&#xff0c;大概知道dfs能做 2.自0问题开始查找&#xff0c;确保之后每次查找到的问题的困难度均大于上一次 3.遍历所有情况再记录cnt即可 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring&…

蓝桥杯 2023 省A 颜色平衡树

树上启发式合并是一个巧妙的方法。 dsu on tree&#xff0c;可以称为树上启发式合并&#xff0c;是一种巧妙的暴力。用一个全局数组存储结果&#xff0c;对于每棵子树&#xff0c;有以下操作&#xff1a; 先遍历轻儿子&#xff0c;处理完轻儿子后将数组清零&#xff08;要再…

基于Java中的SSM框架实现快餐店线上点餐系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现快餐店线上点餐系统演示 摘要 随着计算机互联网的高速发展。餐饮业的发展也加入了电子商务团队。各种网上点餐系统纷纷涌现&#xff0c;不仅增加了商户的销售量和营业额&#xff0c;而且为买家提供了极大的方便&#xff0c;足不出户&#xff0c;就能订…

【机器学习300问】50、什么是基于用户的协同过滤算法?

一、 基于用户的协同过滤算法直观感受 假设你在一家大型书店&#xff0c;店主不仅知道你过去的购买记录&#xff0c;还了解其他所有顾客的购买行为。当你要寻找下一本喜欢的书籍时&#xff0c;店主不是根据书籍本身的属性来推荐&#xff08;比如作者、类型&#xff09;&#xf…

RPC 快速入门

一、What 1&#xff09;小故事 张三和李四都在同一个家公司负责商品交易的模块&#xff0c;两个人平时开发甚是紧密。 &#x1f64b;&#x1f3fb;‍♂️ 张三&#xff1a;“李四&#xff0c;我这边一个商品下单了&#xff0c;但是付款数额不对&#xff0c;你帮我查下支付有没…

【应用笔记】LAT1305+使用STM32+TT类型IO的注意事项

1. 概述 在 STM32 系列 MCU 中&#xff0c; 除了一些特殊管脚外&#xff0c;绝大多数管脚都可以分类为 FT (兼容5V 信号)或 TT&#xff08;兼容 3V3 信号&#xff09;类型的 IO&#xff0c;由于 MCU 内部设计的不同&#xff0c; TT IO 相比 5V IO 有更多的限制&#xff0c;下面…

【机器学习】包裹式特征选择之序列前向选择法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

Jenkins中使用Generic Webhook Trigger插件实现持续集成

项目环境 宝塔Linux面板DockerJenkinsgitee 目的 实现每次push推送dev分支到gitee上&#xff0c;Jenkins自动构建项目&#xff1b;push其它分支时&#xff0c;不运行。 实现方法 1.在Jenkins上安装Generic Webhook Trigger插件 在“系统设置–插件管理–可选插件”界面搜…

1-Flume中agent的source

Flume&#xff08;1.11.0版本&#xff09; 简介 概述 Flume本身是由Cloudera公司开发的后来贡献给了Apache的一套针对日志数据进行收集(collecting)、汇聚(aggregating)和传输(moving)的机制 Flume本身提供了简单且灵活的结构来完成日志数据的传输 Flume有两大版本&#x…

有道翻译实现接口加密解密

文章目录 目标简单逆向分析源码深度逆向分析参考文献目标 实现对网易有道 sign 等参数的加密 及 返回的密文数据解密实现 简单逆向分析 首先在右上角提前登录好账号信息。 输入中文:你好 要求翻译成:英文 全局搜索:你好 或 hello,结果没有发现什么。 切换 Fetch/XHR …

JAVA毕业设计131—基于Java+Springboot+Vue的餐厅点餐系统(源代码+数据库+4000字文档)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的餐厅点餐系统(源代码数据库4000字文档)131 一、系统介绍 本项目前后端分离&#xff0c;分为管理员、用户两种角色 1、用户&#xff1a; 注册、登录、点餐…

移动0【双指针】

移动零 cur每次走一步&#xff0c;dest走不走取决于cur有没有找到非0值&#xff0c;一旦找打非0值&#xff0c;交换。不是非0值&#xff0c;dest不动。》【非零&#xff0c;dest】【dest&#xff0c;0】 class Solution { public:void moveZeroes(vector<int>& num…

电脑不能读取移动硬盘,但是可以读取U盘解决方法

找到此电脑 右键设备管理器&#xff0c;找到其中的通用串行总线控制器。 注意&#xff0c;凡是插入到电脑当中不能读取的U盘或者移动硬盘&#xff0c;都会在通用串行总线控制器当中显示为USB大容量存储设备 鼠标选中“USB大容量存储设备”&#xff0c;右键卸载它。此时&#x…

[项目前置]websocket协议

websocket协议介绍 WebSocket 协议是一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更简单&#xff0c;允许服务器主动向客户端推送数据。它在 2011 年成为国际标准&#xff0c;现在被所有现代浏览器支持。WebSocket 设计用于…