第 367 场 LeetCode 周赛题解

news2024/11/29 8:39:08

A 找出满足差值条件的下标 I

在这里插入图片描述

模拟

class Solution {
public:
    vector<int> findIndices(vector<int> &nums, int indexDifference, int valueDifference) {
        int n = nums.size();
        for (int i = 0; i < n; i++)
            for (int j = 0; j <= i; j++)
                if (i - j >= indexDifference && abs(nums[i] - nums[j]) >= valueDifference)
                    return {i, j};
        return {-1, -1};
    }
};

B 最短且字典序最小的美丽子字符串

在这里插入图片描述

枚举:先枚举美丽子字符串的长度以求其最短长度 l e n len len ,然后遍历求长为 l e n len len 的字典序最小的美丽子字符串。

class Solution {
public:
    string shortestBeautifulSubstring(string s, int k) {
        int n = s.size();
        vector<int> ps(n + 1);//前缀和
        for (int i = 0; i < n; i++)
            ps[i + 1] = ps[i] + (s[i] == '1' ? 1 : 0);
        for (int len = k; len <= n; len++) {
            int find = 0;
            for (int i = 0, j = i + len - 1; j < n; i++, j++) {
                if (ps[j + 1] - ps[i] == k)//子字符串s[i,j]中1的个数恰好等于 k
                    find = 1;
            }
            string res = "";
            if (find) {
                for (int i = 0, j = i + len - 1; j < n; i++, j++) {
                    if (ps[j + 1] - ps[i] == k) {
                        if (res.empty() || s.substr(i, len) < res)
                            res = s.substr(i, len);
                    }
                }
                return res;
            }
        }
        return "";
    }
};

C 找出满足差值条件的下标 II

在这里插入图片描述

前缀极值:设 j ≤ i j\le i ji ,且 i − j ≥ i n d e x D i f f e r e n c e i-j\ge indexDifference ijindexDifference,为了使 a b s ( n u m s [ i ] − n u m s [ j ] ) abs(nums[i]-nums[j]) abs(nums[i]nums[j]) 尽量大, n u m s [ i ] nums[i] nums[i] 应该尽量小或尽量大,所以预处理求出前缀极小值数组 m n mn mn m n [ i ] = a r g m i n 0 ≤ k ≤ i { n u m s [ k ] } mn[i]=argmin_{0\le k\le i} \{nums[k]\} mn[i]=argmin0ki{nums[k]} )和前缀极大值数组 m x mx mx m x [ i ] = a r g m a x 0 ≤ k ≤ i { n u m s [ k ] } mx[i]=argmax_{0\le k\le i} \{nums[k]\} mx[i]=argmax0ki{nums[k]} )),然后枚举 i i i

class Solution {
public:
    vector<int> findIndices(vector<int> &nums, int indexDifference, int valueDifference) {
        int n = nums.size();
        int mx[n], mn[n];
        mx[0] = 0;
        mn[0] = 0;
        for (int i = 1; i < n; i++) {
            mx[i] = nums[mx[i - 1]] > nums[i] ? mx[i - 1] : i;
            mn[i] = nums[mn[i - 1]] < nums[i] ? mn[i - 1] : i;
        }
        for (int i = 0; i < n; i++) {
            if (i - indexDifference >= 0) {
                if (abs(nums[i] - nums[mx[i - indexDifference]]) >= valueDifference)
                    return {i, mx[i - indexDifference]};
                if (abs(nums[i] - nums[mn[i - indexDifference]]) >= valueDifference)
                    return {i, mn[i - indexDifference]};
            }
        }
        return {-1, -1};
    }
};

D 构造乘积矩阵

在这里插入图片描述

前后缀处理:设 p r e [ i ] pre[i] pre[i] 为前 i + 1 i+1 i+1 行元素之积,设 s u f [ i ] suf[i] suf[i] 为后 g r i d . s i z e ( ) − i grid.size()-i grid.size()i 行元素之积,设 l e f t [ i ] [ j ] left[i][j] left[i][j] 为第 i i i 行前 j + 1 j+1 j+1
元素之积,设 r i g h t [ i ] [ j ] right[i][j] right[i][j] 为第 i i i 行后 g r i d [ 0 ] . s i z e ( ) − j grid[0].size()-j grid[0].size()j 个元素之积,则 p [ i ] [ j ] = p r e [ i − 1 ] × s u f [ i + 1 ] × l e f t [ i ] [ j − 1 ] × r i g h t [ i ] [ j + 1 ] p[i][j]=pre[i-1]\times suf[i+1] \times left[i][j-1]\times right[i][j+1] p[i][j]=pre[i1]×suf[i+1]×left[i][j1]×right[i][j+1]

class Solution {
public:
    using ll = long long;

    vector<vector<int>> constructProductMatrix(vector<vector<int>> &grid) {
        int m = grid.size(), n = grid[0].size();
        int mod = 12345;

        vector<vector<int>> res(m, vector<int>(n));

        vector<ll> row(m, 1), pre(m, 1), suf(m, 1);
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++)
                row[i] = row[i] * grid[i][j] % mod;
            pre[i] = i != 0 ? pre[i - 1] * row[i] % mod : row[i];
        }
        for (int i = m - 1; i >= 0; i--)
            suf[i] = i != m - 1 ? suf[i + 1] * row[i] % mod : row[i];
        vector<ll> left(n), right(n);
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++)
                left[j] = j != 0 ? left[j - 1] * grid[i][j] % mod : grid[i][j];
            for (int j = n - 1; j >= 0; j--)
                right[j] = j != n - 1 ? right[j + 1] * grid[i][j] % mod : grid[i][j];

            int other = (i != 0 ? pre[i - 1] : 1) * (i != m - 1 ? suf[i + 1] : 1) % mod;
            for (int j = 0; j < n; j++)
                res[i][j] = other * (j != 0 ? left[j - 1] : 1) % mod * (j != n - 1 ? right[j + 1] : 1) % mod;
        }
        return res;
    }
};

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

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

相关文章

【探索Linux】—— 强大的命令行工具 P.11(基础IO,文件操作)

阅读导航 前言一、C语言的文件操作二、C的文件操作三、Linux系统文件操作&#xff08;I/O接口&#xff09;1. open()⭕传入多个打开方式&#xff08;按位或操作将不同的标志位组合在一起&#xff09; 2. write()3. read()4. close()5. lseek() 温馨提示 前言 前面我们讲了C语言…

vue3后台管理框架之axios二次封装

在开发项目的时候避免不了与后端进行交互,因此我们需要使用axios插件实现发送网络请求。在开发项目的时候 我们经常会把axios进行二次封装。 目的: 1:使用请求拦截器,可以在请求拦截器中处理一些业务(开始进度条、请求头携带公共参数) 2:使用响应拦截器,可以在响应拦截器…

Hadoop3教程(十二):MapReduce中Shuffle机制的概述

文章目录 &#xff08;95&#xff09; Shuffle机制什么是shuffle&#xff1f;Map阶段Reduce阶段 参考文献 &#xff08;95&#xff09; Shuffle机制 面试的重点 什么是shuffle&#xff1f; Map方法之后&#xff0c;Reduce方法之前的这段数据处理过程&#xff0c;就叫做shuff…

华为ICT——云计算基础知识、计算类技术听课笔记

ICT(information and communications technology):信息与通信技术 传统IT架构缺点 TCO&#xff1a;总体拥有成本 云计算模式 云计算价值 云计算通用点 虚拟化技术&#xff1a;将单台物理服务器虚拟为多台虚拟机使用&#xff0c;多台虚拟机共享物理服务器硬件资源。 虚拟化本质…

使用PM2部署spring-boot项目

一、打包应用 1、先清理之前的 2、修改pom.xml文件关于项目名称版本及jdk版本 3、在idea中直接打包项目 4、等打包完成后会在target文件夹下有一个xx.jar的文件,拷贝出来放到一个文件夹下&#xff0c;或者服务器指定目录下 二、使用pm2部署.jar文件 1、pm2的安装,参考地…

Linux性能优化--性能工具:特定进程CPU

4.0 概述 在用系统级性能工具找出是哪个进程降低了系统速度之后&#xff0c;你需要用特定进程性能工具来发现这个进程的行为。对此&#xff0c;Linux提供了丰富的工具用于追踪一个进程和应用程序性能的重要统计信息。 阅读本章后&#xff0c;你将能够&#xff1a; 确定应用程…

nodejs+vue水浒鉴赏平台系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

unity脚本的生命周期

方法名称调用时间Awake最早调用&#xff0c;所以一般可以在此实现单例模式OnEnable组件激活后调用&#xff0c;在Awake后会调用一次Start在Update之前调用一次&#xff0c;在OnEnable之后调用&#xff0c;可以在此设置一些初始值FixedUpdate固定频率调用方法&#xff0c;每次调…

多模态大模型NextGPT整体结构图、模型示意图和使用模型时示意图

NextGPT模型整体结构 项目地址 论文地址 模型示意图 使用模型时示意图

彩虹易支付 9.27 最新版加订单查询 sy 更新版

彩虹易支付 9.27 最新版加订单查询 sy 更新版 修复客服 2023/09/25&#xff1a; 1. 新增支付宝红包支付插件 2. 新增支付宝 APP 支付转 H5 支付 3. 更新了几个支付插件 安装教程&#xff1a; 环境&#xff1a;php7.2 上传后访问域名进行安装即可 源码下载&#xff1a;ht…

allegro中shape的一些基本操作(一)——添加和修改shape

添加shape 简单添加shape的方式有3种&#xff0c;如下图所示 点击选择相应的shape模式后可以在option面板中设置相应的shape参数&#xff08;这里不做过多介绍&#xff0c;里面可以设置shape的大小、静态或动态shape等参数&#xff09;&#xff0c;然后再用鼠标在相应的层上添…

2022最新版-李宏毅机器学习深度学习课程-P17 卷积神经网络CNN

一、CNN 用于图像分类 需要图片大小统一 彩色图像分为R G B 三层&#xff0c;展平后首尾相接 值代表着颜色的强度 图像识别中不需要全连接的&#xff0c;参数太多了 观测1&#xff1a;通过判断多个小局部图像就能判断出图片标签 感受野的定义 简化1 感受野可以重叠&#xff…

MyBatisPlus的学习项目页面

MyBatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库表信息 类名驼峰转下划线作为表名 名为id的字段作为主键 变量名驼峰转下划线作为表的字段名 常见注解 TableName&#xff1a;用来指定表名 Tableld&#xff1a;用来指定表中的主键字段信息 Tabl…

Linux:Mac VMware Fusion13以及CentOS7安装包

Linux&#xff1a;Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址&#xff1a;https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…

周记之学习总结

你在人群中看到的每一个耀眼的女孩&#xff0c;都是踩着刀尖过来的。你如履平地般地舒适坦然&#xff0c;当然不配拥有任何光芒&#xff1b; 10.11-10.12 思来想去还是不舍得&#xff0c;搞了一下这个jwt&#xff0c;看了很多视频和博客&#xff0c;一直没看懂&#xff0c;两…

使用VS Code终端窗口创建Python虚拟环境

在日常的Python开发中&#xff0c;管理项目的依赖关系是至关重要的。一个非常有用的工具是Python虚拟环境&#xff0c;它允许我们可以在同一计算机上隔离不同项目的依赖&#xff0c;以确保它们不会相互干扰。在本文中&#xff0c;我们将介绍如何在VS Code终端窗口中使用命令mkv…

Ubuntu:VS Code IDE安装ESP-IDF【保姆级】

物联网开发学习笔记——目录索引 参考&#xff1a; VS Code官网&#xff1a;Visual Studio Code - Code Editing. Redefined 乐鑫官网&#xff1a;ESP-IDF 编程指南 - ESP32 VSCode ESP-ID Extension Install 一、前提条件 Visual Studio Code IDE安装ESP-IDF扩展&…

随机误差理论与测量

文章目录 第1节 随机误差的性质和特点第2节 随机误差的数字特性标准差的估计 第3节 单次测量结果的精度指标第4节 多次测量结果的精度指标算数平均值的分布特性与标准差算数平均值的置信度算数平均值的精度指标&#xff08;常用的有4个) 第5节 非等精度测量 第1节 随机误差的性…

2022 年中职组“ 网络安全 ”赛项-web加固阶段题目

前言 大家好&#xff0c;本章节我将复现一次web加固阶段的操作&#xff0c;给大家看看该怎么操作和截图的具体事项&#xff0c;懂的大佬可以在评论区留言改进&#xff0c;感谢大家的支持&#xff01;接下来就跟随我的步伐一起来操作吧&#xff01; 阶段题目概览 环境搭建 底层…

现实很打脸,iPhone15仅卖3天就成中国第一,H败给苹果

H公司和苹果最近是挺热闹的&#xff0c;在互联网H公司的新手机热度远超苹果&#xff0c;然而从实际销售情况来看&#xff0c;消费者掏钱的时候还是选择了苹果而不是H&#xff0c;这就是消费者一向以来的嘴上说不要、行动却很实际。 据分析机构给出的数据指第38周&#xff0c;iP…