第 111 场LeetCode 双周赛题解

A 统计和小于目标的下标对数目

在这里插入图片描述

数据量小,直接枚举数对

class Solution {
public:int countPairs(vector<int> &nums, int target) {int n = nums.size();int res = 0;for (int i = 0; i < n; i++)for (int j = 0; j < i; j++)if (nums[i] + nums[j] < target)res++;return res;}
};

B 循环增长使字符串子序列等于另一个字符串

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

贪心:从两字符串的头部开始匹配,若两串中的字符匹配则两串中的下标都+1,否则仅str1中的下标+1,最终通过str2中的下标判断str2是否已匹配完。

class Solution {
public:bool canMakeSubsequence(string str1, string str2) {int m = str1.size(), n = str2.size();int i = 0, j = 0;for (; i < m && j<n;) {if (str1[i] == str2[j] || ('a' + (str1[i] - 'a' + 1) % 26) == str2[j]) {i++;j++;} else {i++;}}return j == n;}
};

C 将三个组排序

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

脑筋急转弯:设 n n n为数组长度,设原数组 n u m s nums nums上构建的新数组 r e s res res中最长上升子序列的长度为 l l l,则 n − l n-l nl即为答案。数据范围小可以直接 O ( n 2 ) O(n^2) O(n2)动态规划求最长上升子序列,设 p [ i ] p[i] p[i]为以 r e s res res中以 r e s [ i ] res[i] res[i]结尾的最长上升子序列的长度,有状态转移方程: p [ i ] = m a x { 1 m a x { p [ j ] + 1 ∣ 0 ≤ j < i , r e s [ j ] < r e s [ i ] } p[i]=max\left\{\begin{matrix} 1 \\ max\{p[j]+1 \;|\; 0\le j<i,res[j]<res[i]\} \end{matrix}\right. p[i]=max{1max{p[j]+10j<i,res[j]<res[i]}

class Solution {
public:int minimumOperations(vector<int> &nums) {int n = nums.size();vector<int> li[4];for (int i = 0; i < n; i++)li[nums[i]].push_back(i);vector<int> vec;//nums构建的res数组for (int i = 1; i <= 3; i++)if (!li[i].empty())for (auto x: li[i])vec.push_back(x);int p[n];for (int i = 0; i < n; i++) {p[i] = 1;for (int j = 0; j < i; j++)if (vec[j] < vec[i])p[i] = max(p[i], p[j] + 1);}return n - *max_element(p, p + n);}
};

D 范围中美丽整数的数目

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

数位 d p dp dp:设 c o m p ( x , k ) comp(x, k) comp(x,k)为满足 0 ≤ i ≤ x 0\le i\le x 0ix的美丽的 i i i的个数,则原问题答案可表示为 c o m p ( h i g h , k ) − c o m p ( l o w − 1 , k ) comp(high,k)-comp(low-1,k) comp(high,k)comp(low1,k)。使用数位 d p dp dp c o m p ( x , k ) comp(x, k) comp(x,k):设 p [ l o c ] [ v a l ] [ e q ] [ o e ] [ m o d ] p[loc][val][eq][oe][mod] p[loc][val][eq][oe][mod]为满足 “当前数位下标为 l o c loc loc、当前数位之前是否有数字(有: v a l = 1 val=1 val=1,无: v a l = 0 val=0 val=0)、当前数位之前是否严格等于 x x x(是: e q = 1 eq=1 eq=1,否: e q = 0 eq=0 eq=0)、当前奇偶情况 o e oe oe(遇到奇数位+1,遇到偶数维-1),当前数位之前的数对 k k k取模的余数为 m o d mod mod ”的情况下的满足 0 ≤ i ≤ x 0\le i\le x 0ix的美丽的 i i i的个数,分类讨论实现状态转移。

class Solution {
public:int comp(int x, int k) {string s = to_string(x);int n = s.size();int p[n + 1][2][2][2 * n + 1][k];memset(p, -1, sizeof(p));int c = n;//oe维度需要的偏移量,防止下标出现负数function<int(int, int, int, int, int)> get = [&](int loc, int val, int eq, int oe, int mod) {if (p[loc][val][eq][oe][mod] != -1)return p[loc][val][eq][oe][mod];int &cur = p[loc][val][eq][oe][mod];if (loc == n)//已遍历完所有数位return cur = (val && oe == c && mod == 0) ? 1 : 0;cur = 0;if (!val) {//当前数位之前无数字cur += get(loc + 1, 0, 0, oe, mod);//当前数位继续无数字if (eq)//当前数位之前严格等于xfor (int i = 1; i <= s[loc] - '0'; i++)cur += get(loc + 1, 1, i != s[loc] - '0' ? 0 : 1, oe + (i % 2 == 1 ? 1 : -1), (mod * 10 + i) % k);else//当前数位之前不严格等于xfor (int i = 1; i <= 9; i++)cur += get(loc + 1, 1, 0, oe + (i % 2 == 1 ? 1 : -1), (mod * 10 + i) % k);} else {当前数位之前有数字if (eq)//当前数位之前严格等于xfor (int i = 0; i <= s[loc] - '0'; i++)cur += get(loc + 1, 1, i != s[loc] - '0' ? 0 : 1, oe + (i % 2 == 1 ? 1 : -1), (mod * 10 + i) % k);else//当前数位之前不严格等于xfor (int i = 0; i <= 9; i++)cur += get(loc + 1, 1, 0, oe + (i % 2 == 1 ? 1 : -1), (mod * 10 + i) % k);}return cur;};return get(0, 0, 1, c + 0, 0);}int numberOfBeautifulIntegers(int low, int high, int k) {int a = comp(high, k), b = comp(low - 1, k);return a - b;}
};

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

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

相关文章

[Go版]算法通关村第十二关青铜——不简单的字符串转换问题

目录 题目&#xff1a;转换成小写字母思路分析&#xff1a;大写字母ASCII码 32 小写字母ASCII码Go代码Go代码-优化: 大写字母ASCII码 | 32 小写字母ASCII码 题目&#xff1a;字符串转换整数&#xff08;atoi&#xff09;思路分析&#xff1a;去除首部空格 明确正负 读取数…

【Spring Boot】详解条件注解以及条件拓展注解@Conditional与@ConditionOnXxx

Spring Conditional Spring 4.0提供的注解。作用是给需要装载的Bean增加一个条件判断。只有满足条件才会装在到IoC容器中。而这个条件可以由自己去完成的&#xff0c;可以通过重写Condition接口重写matches()方法去实现自定义的逻辑。所以说这个注解增加了对Bean装载的灵活性。…

STM32 CubeMX (第四步Freertos内存管理和CPU使用率)

STM32 CubeMX STM32 CubeMX &#xff08;第四步Freertos内存管理和CPU使用率&#xff09; STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用STM32 CubeMX 库&#xff0c;配置Fr…

通过安全日志读取WFP防火墙放行日志

前言 之前的文档中&#xff0c;描写了如何对WFP防火墙进行操作以及如何在防火墙日志中读取被防火墙拦截网络通讯的日志。这边文档&#xff0c;着重描述如何读取操作系统中所有被放行的网络通信行为。 读取系统中放行的网络通信行为日志&#xff0c;在win10之后的操作系统上&am…

高阶数据结构-图

高阶数据结构-图 图的表示 图由顶点和边构成&#xff0c;可分为有向图和无向图 邻接表法 图的表示方法有邻接表法和邻接矩阵法&#xff0c;以上图中的有向图为例&#xff0c;邻接表法可以表示为 A->[(B,5),(C,10)] B->[(D,100)] C->[(B,3)] D->[(E,7)] E->[…

FPGA原理与结构——ROM IP的使用与测试

一、前言 本文介绍Block Memory Generator v8.4 IP核 实现ROM&#xff0c;在学习一个IP核的使用之前&#xff0c;首先需要对于IP核的具体参数和原理有一个基本的了解&#xff0c;具体可以参考&#xff1a; FPGA原理与结构——块RAM&#xff08;Block RAM,BRAM&#xff09;http…

供应链安全和第三方风险管理:讨论如何应对供应链中的安全风险,以及评估和管理第三方合作伙伴可能带来的威胁

第一章&#xff1a;引言 在当今数字化时代&#xff0c;供应链的安全性越来越受到重视。企业的成功不仅仅依赖于产品和服务的质量&#xff0c;还取决于供应链中的安全性。然而&#xff0c;随着供应链越来越复杂&#xff0c;第三方合作伙伴的参与也带来了一系列安全风险。本文将…

C#中的委托

目录 概述&#xff1a; 举例&#xff1a;​ 总结: 概述&#xff1a; 中文的角度来说:指的是把事情托付给别人或别的机构(办理)&#xff0c;造个句子&#xff1a;别人委托的事情&#xff0c;我们一定要尽力而为&#xff0c;不遗余力的去办成。 在C#中&#xff0c;委托是一种…

回归预测 | MATLAB实现GA-RBF遗传算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GA-RBF遗传算法优化径向基函数神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-RBF遗传算法优化径向基函数神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果…

CoordAtt注意力网络结构

源码&#xff1a; import torch import torch.nn as nn import math import torch.nn.functional as Fclass h_sigmoid(nn.Module):def __init__(self, inplaceTrue):super(h_sigmoid, self).__init__()self.relu nn.ReLU6(inplaceinplace)def forward(self, x):return self.…

VSCode\PyCharm23.2+PyQGIS插件开发配置相关要点

近期利用VSCode\PyCharmPyQGIS进行插件开发&#xff0c;现将要点总结一下&#xff1a; 一、VSCode&#xff0c;我没有配置成功&#xff0c;主要是最后一个阶段调试的时候老是不成功。以后会持续关注。但是有几个要点&#xff1a; 1、VSCodePyQIS开发&#xff0c;智能提示的设…

jmeter模拟多用户并发

一、100个真实的用户 1、一个账号模拟100虚拟用户同时登录和100账号同时登录 区别 &#xff08;1&#xff09;1个账号100个人用&#xff0c;同时登录&#xff1b; &#xff08;2&#xff09;100个人100个账号&#xff0c;同时登录。 相同 &#xff08;1&#xff09;两个都…

机器学习之概率论

最近&#xff0c;在了解机器学习相关的数学知识&#xff0c;包括线性代数和概率论的知识&#xff0c;今天&#xff0c;回顾了概率论的知识&#xff0c;贴上几张其他博客的关于概率论的图片&#xff0c;记录学习过程。

SSH远程直连--------------Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试 在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器…

线性代数的学习和整理6:向量和矩阵详细,什么是矩阵?(草稿-----未完成)

43 矩阵 4.1 矩阵 4 整理网上总结一些 关于直击线性代数本质的 观点 矩阵的本质是旋转和缩放 矩阵里的数字0矩阵里的数字1&#xff0c;表示不进行缩放矩阵里的数字2等&#xff0c;表示缩放矩阵里的数字-3 表示缩放-3倍&#xff0c;并且反向矩阵里的数字的位置矩阵拆分为列向量…

C#与西门子PLC1500的ModbusTcp服务器通信2--ModbusTcp协议

Modbus TCP是近年来越来越流行的工业控制系统通信协议之一&#xff0c;与其他通信协议相比&#xff0c;Modbus TCP通信速度快、可靠性高、兼容性强、适用于模拟或数字量信号的传输&#xff0c;阅读本文前你必须比较熟悉Modbus协议&#xff0c;了解tcp网络。 一、什么是Modbus …

初阶c语言:实战项目三子棋

前言 大家已经和博主学习有一段时间了&#xff0c;今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳&#xff1a;推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅…

Delegates.observable追踪观察可变数据更新,Kotlin

Delegates.observable追踪观察可变数据更新&#xff0c;Kotlin import kotlin.properties.Delegates import kotlin.reflect.KPropertyclass Person {var name: String by Delegates.observable("fly") { prop: KProperty<*>, old: String, new: String ->p…

虚幻官方项目《CropOut》技术解析 之 程序化岛屿生成器(IslandGenerator)

开个新坑详细分析一下虚幻官方发布的《CropOut》&#xff0c;文章会同步发布到我在知乎|CSDN的专栏里 文章目录 概要Create Island几何体生成部分随机种子Step 1Step 2Step 3Step 4Step 5Step 6 岛屿材质部分动态为草地设置颜色 程序设计的小技巧其它Platform Switch函数 概要 …

Android OpenCV(七十四): Android OpenCV SDK 升级至 4.8.0

前言 如昨日文章所述,OpenCV 4.8.0 已经发布,虽然系列文章已经停更很久,但是版本升级工作笔者是很乐意快速完成的。 OpenCV 4.8.0 Android SDK:https://github.com/opencv/opencv/releases/download/4.8.0/opencv-4.8.0-android-sdk.zip 更新日志:https://github.com/o…