第 356 场力扣周赛题解

A 满足目标工作时长的员工数目

在这里插入图片描述

签到题

class Solution {
public:int numberOfEmployeesWhoMetTarget(vector<int> &hours, int target) {int res = 0;for (auto x: hours)if (x >= target)res++;return res;}
};

B 统计完全子数组的数目

在这里插入图片描述

枚举子数组:枚举子数组的长度,滑动窗口枚举定长子数组,同时维护数组中不同元素的数目

class Solution {
public:int countCompleteSubarrays(vector<int> &nums) {int n = nums.size();int mx = *max_element(nums.begin(), nums.end());vector<int> cnt(mx + 1);for (auto x: nums)cnt[x] = 1;int tar = accumulate(cnt.begin(), cnt.end(), 0);//数组中不同元素的数目int res = 0;for (int len = 1; len <= n; len++) {fill(cnt.begin(), cnt.end(), 0);int cur = 0;for (int i = 0; i < len - 1; i++)if (cnt[nums[i]]++ == 0)cur++;for (int i = 0, j = i + len - 1; j < n; i++, j++) {if (cnt[nums[j]]++ == 0)cur++;if (cur == tar)res++;if (--cnt[nums[i]] == 0)cur--;}}return res;}
};

C 包含三个字符串的最短字符串

在这里插入图片描述

枚举排列: 若 a , b , c a, b, c a,b,c存在一个串是另一个串的子串的情况,则先删除 a , b , c a, b, c a,b,c中的子串,再枚举剩余串的出现顺序,对于给定顺序每两个邻接串共用尽可能长的公共部分(eg:abcbcd拼接共用bc)

class Solution {
public:string get(string &a, string &b) {//返回拼接a和b的最短串for (int k = min(b.size(), a.size()); k > 0; k--) {int i, j;for (i = a.size() - k, j = 0; j < k; i++, j++)if (a[i] != b[j])break;if (j == k)return a + b.substr(k);}return a + b;}string minimumString(string a, string b, string c) {vector<string> li{a, b, c};sort(li.begin(), li.end(), [](string &s1, string &s2) { return s1.size() < s2.size(); });int cnt = 3;//剩余串的个数if (li[1].find(li[0]) != li[1].npos || li[2].find(li[0]) != li[2].npos) {//li[0]是某串的子串所以删除li.erase(li.begin());if (li[1].find(li[0]) != li[1].npos)//只剩1个串的情况return li[1];cnt = 2;}if (li[2].find(li[1]) != li[2].npos) {li[1]是某串的子串所以删除li.erase(li.begin() + 1);cnt = 2;}if (cnt == 2) {string s1 = get(li[0], li[1]);string s2 = get(li[1], li[0]);if (s1.size() != s2.size())return s1.size() < s2.size() ? s1 : s2;return s1 < s2 ? s1 : s2;}sort(li.begin(), li.end());string res(305, ' ');do {//枚举a,b,c串的排列顺序string t = get(li[0], li[1]);t = get(t, li[2]);if (t.size() < res.size() || t.size() == res.size() && t < res)res = t;} while (next_permutation(li.begin(), li.end()));return res;}
};

D 统计范围内的步进数字数目

在这里插入图片描述

定义 s u m ( s ) sum(s) sum(s)为闭区间 [ 1 , s ] [1,s] [1,s]内的的步进数字数目,则区间 [ l o w , h i g h ] [low,high] [low,high]内的的步进数字数目为 s u m [ h i g h ] − s u m [ l o w ] sum[high]-sum[low] sum[high]sum[low](若 l o w low low为步进数字则还要 + 1 +1 +1),定义 p l o c , p r e , v a l , e q l p_{loc,pre,val,eql} ploc,pre,val,eql为在 “当前待处理的下标为 l o c loc loc,前一位选择的数字(若存在)为 p r e pre pre v a l val val:前面是否有选择数字(0:没有,1:有), e q l eql eql:前面选择的数是否严格等于 s [ 0 , l o c − 1 ] s[0,loc-1] s[0,loc1](0:否,1:是)” 这种情况下可以构成多少个 [ 1 , s ] [1,s] [1,s]内的步进数字,通过记忆化搜索进行计算。

class Solution {
public:typedef long long ll;ll mod = 1e9 + 7;int countSteppingNumbers(string low, string high) {int islow = 1;for (int i = 1; i < low.size(); i++)//判断low是否是步进数字if (abs(low[i] - low[i - 1]) != 1)islow = 0;return ((sum(high) - sum(low) + islow) % mod + mod) % mod;}ll sum(string &s) {int n = s.size();ll p[n + 1][10][2][2];memset(p, -1, sizeof(p));function<ll(int, int, int, int)> get = [&](int loc, int pre, int val, int eql) {if (p[loc][pre][val][eql] != -1)return p[loc][pre][val][eql];if (loc == n) {//已处理完每一位return p[loc][pre][val][eql] = val;}ll &cur = p[loc][pre][val][eql];cur = 0;if (val) {//前面有数字if (!eql) {//前面选择的数不严格等于s[0,loc-1]if (pre != 0) {cur += get(loc + 1, pre - 1, val, eql);cur %= mod;}if (pre != 9) {cur += get(loc + 1, pre + 1, val, eql);cur %= mod;}} else {//前面选择的数严格等于s[0,loc-1]if (pre != 0 && pre - 1 <= s[loc] - '0') {cur += get(loc + 1, pre - 1, val, pre - 1 == s[loc] - '0' ? 1 : 0);cur %= mod;}if (pre != 9 && pre + 1 <= s[loc] - '0') {cur += get(loc + 1, pre + 1, val, pre + 1 == s[loc] - '0' ? 1 : 0);cur %= mod;}}} else {//前面没有数字cur += get(loc + 1, 0, val, 0);if (!eql) {//前面选择的数不严格等于s[0,loc-1]for (int i = 1; i <= 9; i++) {cur += get(loc + 1, i, 1, 0);cur %= mod;}} else {//前面选择的数严格等于s[0,loc-1]for (int i = 1; i <= s[loc] - '0'; i++) {cur += get(loc + 1, i, 1, i == s[loc] - '0' ? 1 : 0);cur %= mod;}}}cur = (cur + mod) % mod;return cur;};return get(0, 0, 0, 1);}
};

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

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

相关文章

web-暴力破解密码

Burte Force&#xff08;暴力破解&#xff09;概述 暴力破解”是一攻击具手段&#xff0c;在web攻击中&#xff0c;一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录&#xff0c;直到得到正确的结果。 为了提高效率&…

【iOS】KVOKVC原理

1 KVO 键值监听 1.1 KVO简介 KVO的全称是Key-Value Observing&#xff0c;俗称"键值监听"&#xff0c;可以用于监听摸个对象属性值得改变。 KVO一般通过以下三个步骤使用&#xff1a; // 1. 添加监听 [self.student1 addObserver:self forKeyPath:"age"…

protobuf数据类型

protobuf特殊数据类型 一&#xff0c;特殊数据类型1&#xff0c;enum使用规则注意事项 2&#xff0c;Any3&#xff0c;oneof4&#xff0c;map通讯录demo升级 二&#xff0c;默认值三&#xff0c;更新消息更新规则保留字段reserved未知字段获取未知字段 四&#xff0c;选项optio…

时频分析方法的matlab实现

傅里叶变换 function [ output_args ] example3_7( input_args ) %EXAMPLE3_7 Summary of this function goes here % Detailed explanation goes here clc; clear; fs12800;%采样频率 s1load(Sig1.txt); s2load(Sig2.txt); lslength(s1); figure(1) subplot(211) plot…

Cilium 系列-7-Cilium 的 NodePort 实现从 SNAT 改为 DSR

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能。但是通过对 Cilium 不同模式的切换/功能的启用&#xff0c;可以进一步提升 Cilium 的网络性能。具体调优项包括不限于&#xff1a; 启用本地路由 (Native Rou…

西安市未央区地方财政支出绩效管理研究_kaic

摘 要 目前传统的地方财政绩效管理研究普遍上主要集中在有关收入研究方面上&#xff0c;而对其支出的规模以及各类结构的研究较少。我国大部分地方财政政府的财政收入低下&#xff0c;财政支出效率有限&#xff0c;不能很好的为其地方经济提供较为稳定的社会支撑和经济保障。造…

SQL基础使用

SQL的概述 SQL全称&#xff1a; Structured Query Language&#xff0c;结构化查询语言&#xff0c;用于访问和处理数据库的标准的计算机语言。 SQL语言1974年由Boyce和Chamberlin提出&#xff0c;并首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发…

PostgreSQL构建时间

– PostgreSQL构建时间 select make_timestamp(2023,7,27,7,34,16);

K8s-资源管理(二)

文章目录 2. 资源管理2.1 资源管理介绍2.2 YAML语言介绍2.3 资源管理方式2.3.1 命令式对象管理2.3.2 命令式对象配置2.3.3 声明式对象配置 2.4. 模拟使用普通用户来操作2.5 kubectl 一些基本命令2.6 使用个人的 docker 仓库的镜像 2. 资源管理 2.1 资源管理介绍 在kubernetes…

基于深度学习的高精度狗狗检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度狗狗检测识别系统可用于日常生活中检测与定位120类狗狗目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的狗狗目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练…

web漏洞-java安全(41)

这个重点是讲关于java的代码审计&#xff0c;看这些漏洞是怎么在java代码里面产生的。 #Javaweb 代码分析-目录遍历安全问题 这个漏洞原因前面文章有&#xff0c;这次我们看看这个漏洞如何在代码中产生的&#xff0c;打开靶场 解题思路就是通过文件上传&#xff0c;上传文件…

如何利用tf.keras 实现深度学习?

tf.keras是TensorFlow 2.0的高阶API接口&#xff0c;为TensorFlow的代码提供了新的风格和设计模式&#xff0c;大大提升了TF代码的简洁性和复用性&#xff0c;官方也推荐使用tf.keras来进行模型设计和开发。 常用模块 tf.keras中常用模块如下表所示&#xff1a; 常用方法 深度…

安全学习DAY10_HTTP数据包

HTTP数据包 文章目录 HTTP数据包小节导图Request请求数据包结构Request请求方法&#xff08;方式&#xff09;请求头&#xff08;Header&#xff09;Response响应数据包结构Response响应数据包状态码状态码作用&#xff1a;部分状态码详解判断网站文件是否存在的状态码&#xf…

配置代理——解决跨域问题(详解)

之前写项目的时候总会遇到配置代理的问题&#xff0c;可是配置了之后有时有用&#xff0c;有时就没有用&#xff0c;自己之前学的也是懵懵懂懂&#xff0c;于是专门花了一个小时去了解了如何配置代理跨域&#xff0c;然后在此记录一下&#xff0c;方便自己以后查阅。 一、 常用…

RBF神经网络原理和matlab实现

1.案例背景 1.1 RBF神经网络概述 径向基函数(Radical Basis Function,RBF)是多维空间插值的传统技术,由Powell于1985年提出。1988年, Broomhead和 Lowe根据生物神经元具有局部响应这一特点,将 RBF引入神经网络设计中,产生了RBF神经网络。1989 年&#xff0c;Jackson论证了…

应用层协议——https

文章目录 1. HTTPS 是什么2. 什么是"加密"3. 常见的加密方式4. 数据摘要 && 数字签名5. HTTPS 的工作过程探究5.1 方案1 - 只使用对称加密5.2 方案2 - 只使用非对称加密5.3 方案3 - 双方都使用非对称加密5.4 方案4 - 非对称加密 对称加密5.5 中间人攻击5.6 …

【深度学习】InST,Inversion-Based Style Transfer with Diffusion Models,论文

代码&#xff1a;https://github.com/zyxElsa/InST 论文&#xff1a;https://arxiv.org/abs/2211.13203 文章目录 AbstractIntroductionRelated WorkImage style transferText-to-image synthesisInversion of diffusion models MethodOverview ExperimentsComparison with Sty…

C++ 多进程学习总结

C多进程 进程间通信 消息队列 消息队列&#xff1a;提供一个种进程间发送/接收数据块&#xff08;常为结构体数据&#xff09;的方法。 函数接口 ftok()&#xff1a;获取消息队列键值msgget()&#xff1a;创建和访问消息队列msgsnd()&#xff1a;向消息队列发送数据msgrcv…

VSCode配置之C++ SQLite3极简配置方案

背景 最近在学习《深入应用C11: 代码优化与工程级应用》&#xff0c;其中第13章说到SQLite库&#xff0c;查询网上诸多教程&#xff0c;发现比较容易出现bug且配置较为麻烦&#xff0c;故记录此次简化版方案&#xff0c;以供参考。 软件环境 SQLite 3.42.0 版本&#xff08;仅…