当前位置: 首页 > news >正文

第 115 场 LeetCode 双周赛题解

A 上一个遍历的整数

在这里插入图片描述

模拟

class Solution {
public:vector<int> lastVisitedIntegers(vector<string> &words) {vector<int> res;vector<int> li;for (int i = 0, n = words.size(); i < n;) {if (words[i] != "prev")li.push_back(stoi(words[i++]));else {int j = i;for (; j < n && words[j] == "prev"; j++) {if (li.size() < j - i + 1)res.push_back(-1);elseres.push_back(li[li.size() - (j - i + 1)]);}i = j;}}return res;}
};

B 最长相邻不相等子序列 I

在这里插入图片描述

贪心:遍历 g r o u p s groups groups ,若当前元素不等于选择的上一个位置的元素,则将当前位置加入选择的位置子序列,最终返回选择的子序列在 w o r d s words words 对应下标的字符串序列

class Solution {
public:vector<string> getWordsInLongestSubsequence(int n, vector<string> &words, vector<int> &groups) {vector<int> ind;for (int i = 0; i < n; i++)if (ind.empty() || groups[i] != groups[ind.back()])ind.push_back(i);vector<string> res;for (auto x: ind)res.push_back(words[x]);return res;}
};

C 最长相邻不相等子序列 II

在这里插入图片描述

动态规划:设 p [ i ] p[i] p[i] 为以 i i i 结尾的满足题目所述条件的最长子序列的长度,求出 p p p 数组后,设 p [ i n d ] p[ind] p[ind] 为其最大值,则从 i n d ind ind 开始逆序求子序列中的各个元素。

class Solution {
public:int comp_dis(string &a, string &b) {//计算字符串a和b的汉明距离if (a.size() != b.size())return -1;int res = 0;for (int i = 0; i < a.size(); i++)if (a[i] != b[i])res++;return res;}vector<string> getWordsInLongestSubsequence(int n, vector<string> &words, vector<int> &groups) {vector<int> p(n);int d[n][n];for (int i = 0; i < n; i++) {p[i] = 1;for (int j = 0; j < i; j++) {if (groups[j] == groups[i])continue;d[i][j] = comp_dis(words[j], words[i]);if (d[i][j] == 1)p[i] = max(p[i], p[j] + 1);//子序列中j可能是i的上一个元素}}int ind = 0;for (int i = 1; i < n; i++)if (p[i] > p[ind])ind = i;vector<string> res;while (1) {//逆序求子序列中的各个元素res.push_back(words[ind]);if (p[ind] == 1)break;for (int j = 0; j < ind; j++)if (groups[j] != groups[ind] && d[ind][j] == 1 && p[j] + 1 == p[ind]) {//j可以是最长子序列中ind的前一个元素ind = j;break;}}reverse(res.begin(), res.end());return res;}
};

D 和带限制的子多重集合的数目

在这里插入图片描述

动态规划:设 c n t cnt cnt 表示 n u m s nums nums v i vi vi 出现 c n t [ v i ] cnt[vi] cnt[vi] 次,设 p i , s p_{i,s} pi,s 为由 c n t cnt cnt 中前 i i i 个不同 v i vi vi 构成的和为 s s s 的多重集合的数目,有状态转移方程 p i , s = p i − 1 , s + p i − 1 , s − v i + ⋯ + p i − 1 , s − v i × c n t [ v i ] p_{i,s}=p_{i-1,s}+p_{i-1,s-vi}+\cdots+p_{i-1,s-vi\times cnt[vi]} pi,s=pi1,s+pi1,svi++pi1,svi×cnt[vi] ,类似的有 p i , s − v i = p i − 1 , s − v i + ⋯ + p i − 1 , s − v i × ( c n t [ v i ] + 1 ) p_{i,s-vi}=p_{i-1,s-vi}+\cdots+p_{i-1,s-vi\times (cnt[vi]+1)} pi,svi=pi1,svi++pi1,svi×(cnt[vi]+1),合并一下可以得到 p i , s = p i , s − v i + p i − 1 , s − p i − 1 , s − v i × ( c n t [ v i ] + 1 ) p_{i,s}=p_{i,s-vi}+p_{i-1,s}-p_{i-1,s-vi\times(cnt[vi]+1)} pi,s=pi,svi+pi1,spi1,svi×(cnt[vi]+1),另外数组中的 0 0 0 需要单独处理,及答案为不考虑 0 0 0 时的答案 × ( c n t [ 0 ] + 1 ) \times (cnt[0]+1) ×(cnt[0]+1)

class Solution {
public:using ll = long long;ll mod = 1e9 + 7;map<int, int> cnt;int sum_ = 0;int c0 = 0;int le(int mx) {//和不超过mx的子多重集合的数目int n = cnt.size();int p[n + 1][mx + 1];memset(p, 0, sizeof(p));p[0][0] = 1;auto it = cnt.begin();for (int i = 1; i <= n; i++) {int vi = it->first, ci = it->second;for (int s = 0; s <= mx; s++) {p[i][s] = p[i - 1][s];if (s - vi >= 0)p[i][s] = (p[i][s] + p[i][s - vi]) % mod;if (s - vi * (ci + 1) >= 0)p[i][s] = (p[i][s] - p[i - 1][s - vi * (ci + 1)]) % mod;}it++;}ll res = 0;for (int s = 0; s <= mx; s++)res = (res + p[n][s]) % mod;res = (res * (c0 + 1)) % mod;return (res + mod) % mod;}int countSubMultisets(vector<int> &nums, int l, int r) {for (auto x: nums) {if (x)cnt[x]++;elsec0++;sum_ += x;}int vr = le(r);int vl = l != 0 ? le(l - 1) : 0;return ((vr - vl) % mod + mod) % mod;}
};

相关文章:

第 115 场 LeetCode 双周赛题解

A 上一个遍历的整数 模拟 class Solution { public:vector<int> lastVisitedIntegers(vector<string> &words) {vector<int> res;vector<int> li;for (int i 0, n words.size(); i < n;) {if (words[i] ! "prev")li.push_back(stoi…...

【IDE插件教学】华为云应用中间件系列—Redis实现(电商游戏应用)排行榜示例

云服务、API、SDK&#xff0c;调试&#xff0c;查看&#xff0c;我都行 阅读短文您可以学习到&#xff1a;应用中间件系列之Redis实现&#xff08;电商游戏应用&#xff09;排行榜示例 1 什么是DEVKIT 华为云开发者插件&#xff08;Huawei Cloud Toolkit&#xff09;&a…...

Linux:mongodb数据库源码包安装(4.4.25版本)

环境 系统&#xff1a;centos7 本机ip&#xff1a;192.168.254.1 准备的mongodb包 版本 &#xff1a; 4.4.25 全名称&#xff1a;mongodb-linux-x86_64-rhel70-4.4.25.tgz 下载源码包 Download MongoDB Community Server | MongoDBhttps://www.mongodb.com/try/downloa…...

pdf怎么合并在一起?

pdf怎么合并在一起&#xff1f;对于pdf合并这个问题&#xff0c;有的小伙伴想很简单&#xff0c;只需要将文件直接复制再其中的一个后面不就完事了吗。其实不然&#xff0c;因为我们如果要是需要将很多文件进行合并的话&#xff0c;就会产生很多问题的。总之&#xff0c;在现在…...

杀死僵尸进程ZooKeeperMain

关闭Hadoop后jps发现还有个进程ZooKeeperMain没有关闭&#xff0c;使用kill -9 <>也没有用&#xff0c;这种就是僵尸进程&#xff0c;需要用父进程ID来杀死 解决方法 话不多说&#xff0c;直接上解决方案&#xff0c; 1. 第一步 清楚需要关闭的进程ID&#xff0c;我…...

JavaScript class和function的区别

待整理&#xff1a; 一 二 Class 组件和 Function 组件是 React 中创建组件的两种主要方式。他们在语法和功能上有一些不同。以下分点是 Class 组件和 Function 组件在不同方面的对比&#xff1a; 1. 语法结构 Class 组件&#xff1a; import React, { Component } from …...

MySQL8.0修改mysql允许远程连接

1、连接服务器: mysql -u root -p2、看当前所有数据库&#xff1a;show databases; 3、进入mysql数据库&#xff1a;use mysql; 4、查看mysql数据库中所有的表&#xff1a;show tables; 5、查看user表中的数据&#xff1a;select Host, User,Password from user; 6、修改us…...

【算法训练-排序算法 二】【手撕排序】快速排序、堆排序、归并排序

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【手撕排序系列】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

C# RestoreFormer 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…...

yolov5+车辆重识别【附代码】

本篇文章主要是实现的yolov5和reid结合的车辆重识别项目。是在我之前实现的yolov5_reid行人重识别的代码上修改实现的baseline模型。 目录 相关参考资料 数据集说明 环境说明 项目使用说明 vehicle reid训练 yolov5车辆重识别 从视频中获取想要检测的车(待检测车辆) 车…...

C语言练习百题之#ifdef和#ifndef的应用

#if, #ifdef, 和 #ifndef 是C语言预处理指令&#xff0c;它们可以用于条件编译&#xff0c;帮助控制程序的编译过程。以下是各种应用场景以及一些注意事项&#xff1a; 1. 使用 #ifdef 和 #ifndef 检查宏是否定义&#xff1a; 应用场景: 检查宏是否已经在代码中定义&#xf…...

与C语言不同的基础语法

一、不同 1.可同时定义并初始化多个变量 2.有string字符串类型 3.可在循环中定义变量 #include<iostream> using namespace std; int main() {int a1,b2;//可同时定义并初始化多个变量string name;//字符串类型 char array[3]; for(int i1;i<3;i)//for中定义i变量…...

Python文件读写实战:处理日常任务的终极工具!

更多资料获取 &#x1f4da; 个人网站&#xff1a;涛哥聊Python Python文件的读写操作时&#xff0c;有很多需要考虑的细节&#xff0c;这包括文件打开方式、读取和写入数据的方法、异常处理等。 在本文中&#xff0c;将深入探讨Python中的文件操作&#xff0c;旨在提供全面的…...

思维模型 秩序

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。秩序是事物正常运行的基石。有序的安排是成功的先决条件。 1 秩序的应用 1.1 秩序在不同科学领域中的应用 物理学和天文学&#xff1a; 物理学家通过研究原子和分子的有序排列来理解物质的…...

pyqt5移动鼠标时显示鼠标坐标

问题&#xff1a; 只有按住鼠标左键或者右键移动的时候才会获取坐标值&#xff0c;即使对QLabel控件使用setMouseTracking(True)也无法解决。 解决方法&#xff1a; 在初始化构造函数中加入 self.setMouseTracking(True) self.centralwidget.setMouseTracking(True) 并且对…...

分享一下开发回收废品小程序的步骤

随着人们环保意识的不断提高&#xff0c;回收利用已成为日常生活中不可或缺的一部分。回收小程序作为一种便捷、高效的回收方式&#xff0c;越来越受到人们的关注和喜爱。本文将探讨回收小程序的意义和作用&#xff0c;设计理念、功能特点、使用流程以及推广策略&#xff0c;并…...

568A和568B两种线序

现状 现在大家都是采用568B的线序 线序 标准568A&#xff1a;橙白-1&#xff0c;橙-2&#xff0c;绿白-3&#xff0c;蓝-4&#xff0c;蓝白-5&#xff0c;绿-6&#xff0c;棕白-7&#xff0c;棕-8 标准568B&#xff1a;绿白-1&#xff0c;绿-2&#xff0c;橙白-3&#x…...

kafka广播消费组停机后未删除优化

背景 kafka广播消息的时候为了保证groupId不重复&#xff0c;再创建的时间采用前缀时间戳的形式&#xff0c;这样可以保证每次启动的时候是创建的新的&#xff0c;但是 会出现一个问题&#xff1a;就是每次停机或者重启都会新建一个应用实例&#xff0c;关闭应用后并不会删除…...

深度学习自学笔记十三:unet网络详解和环境配置

一、unet网络详解 UNet&#xff08;全名为 U-Net&#xff09;是一种深度学习架构&#xff0c;最初由Olaf Ronneberger、Philipp Fischer和Thomas Brox于2015年提出&#xff0c;用于图像分割任务。该网络的名称来源于其U形状的架构&#xff0c;该架构使得网络在编码和解码过程中…...

如何给苹果ipa和安卓apk应用APP包体修改手机屏幕上logo图标iocn?

虽然修改应用文件图标是一个简单的事情&#xff0c;但是还是有很多小可爱是不明白的&#xff0c;你要是想要明白的话&#xff0c;那我就让你今天明白明白&#xff0c;我们今天采用的非常规打包方式&#xff0c;常规打包方式科技一下教程铺天盖地&#xff0c;既然小弟我出马&…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...