Leetcode - 周赛446

目录

  • 一、3522. 执行指令后的得分
  • 二、3523. 非递减数组的最大长度
  • 三、3524. 求出数组的 X 值 I
  • 四、3525. 求出数组的 X 值 II

一、3522. 执行指令后的得分

题目链接
在这里插入图片描述
本题就是一道模拟题,代码如下:

class Solution {public long calculateScore(String[] in, int[] v) {long ans = 0;int i = 0;int n = in.length;boolean[] vis = new boolean[n];while(i >= 0 && i < n && !vis[i]){vis[i] = true;if(in[i].charAt(0) == 'a'){ans += v[i++];}else{i += v[i];}}return ans;}
}

二、3523. 非递减数组的最大长度

题目链接
在这里插入图片描述
本题是一道贪心题,由于题目允许将子数组替换成该子数组的最大元素,求最长非递减的长度,这就变相的说明了需要保留尽可能多的较大值,分类讨论:

  • 对于第一个元素来说,它必须保留,因为如果执行操作,就必须向后找到一个大于等于它的元素,如果存在该元素,那么不如选择不操作,这样就能获得长度为 2 的非递减数组
  • 对于其他元素,贪心的想,从前往后遍历,只要一遇到大于等于 mx 的数,立即更新 mx 和 长度。这样能给后续留下更多的元素,就更可能出现更长的非递减数组。

代码如下:

class Solution {public int maximumPossibleSize(int[] nums) {int ans = 0;int mx = 0;// 有点类似于求前缀最大值的更新次数(只不过==也算更新)for(int x : nums){if(x >= mx){ans++;mx = x;}}return ans;}
}

三、3524. 求出数组的 X 值 I

题目链接
在这里插入图片描述
本题题意就是问,对于 数组nums 的所有子数组来说,他们的乘积 %k = {0,1,...,k-1} 分别有多少种情况。定义 f[i+1][j]:右端点为 i,且它们的乘积 %k = j 的子数组个数,对于 x = nums[i] 来说:

  • 须知:(a * b) % k = ((a % k) * (b % k)) % k
  • 选择以 i-1 结尾的子数组,需要枚举f[i][j], j = %k = {0,1,...,k-1}f[i+1][x*j%k] += f[i][j]
  • 不选以 i-1 结尾的任意子数组,即只包含x,那么 f[i+1][x%k]++

代码如下:

class Solution {public long[] resultArray(int[] nums, int k) {long[] res = new long[k];int n = nums.length;long[][] f = new long[n+1][k];//f[i][j]: 以 i-1 为右端点时,%k=j 的子数组个数// x * ? % k = j, ?是难以计算的// ? = x * j % k, ?是可以直接计算的for(int i = 0; i < n; i++){int x = nums[i] % k;f[i+1][x] = 1;for(int j = 0; j < k; j++){f[i+1][j*x%k] += f[i][j];}for(int j = 0; j < k; j++){res[j] += f[i+1][j];}}return res;}
}

四、3525. 求出数组的 X 值 II

题目链接
在这里插入图片描述
本题与T3类似,区别在于本题有修改操作,且每次查询的子数组的左端点是确定的,问每次查询mod k = queries[i][3] 的子数组个数。单点修改,区间查询可以使用线段树做。需要维护两个东西,一个是[l,r] 的区间乘积,一个是以 l 为左端点的所有子数组乘积mod k的情况。

代码如下:

class SegmentTree{int[][] tree;int k;public SegmentTree(int[] nums, int k){this.k = k;int n = nums.length;tree = new int[n<<2][k+1];build(1, 0, n-1, nums);}void build(int i, int l, int r, int[] a){if(l == r){tree[i][k] = a[l] % k;tree[i][a[l]%k] = 1;return;}int mid = (l + r) >>> 1;build(i<<1, l, mid, a);build(i<<1|1, mid+1, r, a);tree[i] = merge(tree[i<<1], tree[i<<1|1]);}// 合并int[] merge(int[] a, int[] b){int[] ans = a.clone();ans[k] = a[k] * b[k] % k;// 区间乘积 mod kint x = a[k];// 更新以 l 为左端点的子数组 mod k 的情况for(int i = 0; i < k; i++){ans[x * i % k] += b[i];}return ans;}// 单点更新void update(int i, int l, int r, int j, int val){if(l == r){Arrays.fill(tree[i], 0);// 复原tree[i][k] = val % k;tree[i][val%k] = 1;return;}int mid = (l + r) >>> 1;if(j <= mid){update(i<<1, l, mid, j, val);}else{update(i<<1|1, mid+1, r, j, val);}tree[i] = merge(tree[i<<1], tree[i<<1|1]);}// 区间查询int[] query(int i, int l, int r, int jobL, int jobR){if(jobL <= l && r <= jobR){return tree[i];}int mid = (l + r) >>> 1;if(jobR <= mid){return query(i<<1, l, mid, jobL, jobR);}if(mid < jobL){return query(i<<1|1, mid+1, r, jobL, jobR);}return merge(query(i<<1, l, mid, jobL, jobR), query(i<<1|1, mid+1, r, jobL, jobR));}
}
class Solution {public int[] resultArray(int[] nums, int k, int[][] queries) {SegmentTree t = new SegmentTree(nums, k);int n = nums.length;int m = queries.length;int[] ans = new int[m];for(int i = 0; i < m; i++){int[] q = queries[i];t.update(1, 0, n-1, q[0], q[1]);int[] res = t.query(1, 0, n-1, q[2], n-1);ans[i] = res[q[3]];}return ans;}
}

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

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

相关文章

【更新完毕】2025泰迪杯数据挖掘竞赛A题数学建模思路代码文章教学:竞赛论文初步筛选系统

完整内容请看文末最后的推广群 基于自然语言处理的竞赛论文初步筛选系统 基于多模态分析的竞赛论文自动筛选与重复检测模型 摘要 随着大学生竞赛规模的不断扩大&#xff0c;参赛论文的数量激增&#xff0c;传统的人工筛选方法面临着工作量大、效率低且容易出错的问题。因此&…

计算机视觉与深度学习 | RNN原理,公式,代码,应用

RNN(循环神经网络)详解 一、原理 RNN(Recurrent Neural Network)是一种处理序列数据的神经网络,其核心思想是通过循环连接(隐藏状态)捕捉序列中的时序信息。每个时间步的隐藏状态 ( h_t ) 不仅依赖当前输入 ( x_t ),还依赖前一时间步的隐藏状态 ( h_{t-1} ),从而实现…

AI速读:解锁LLM下Game Agent的奇妙世界

在 AI 浪潮中&#xff0c;大语言模型&#xff08;LLMs&#xff09;正重塑游戏智能体格局。想知道基于 LLMs 的游戏智能体如何运作&#xff0c;在各类游戏中有何惊艳表现&#xff0c;未来又将走向何方&#xff1f; 大型语言模型&#xff08;LLMs&#xff09;的兴起为游戏智能体的…

【每日八股】复习计算机网络 Day3:TCP 协议的其他相关问题

文章目录 昨日内容复习TCP 的四次挥手&#xff1f;TCP 为什么要四次挥手&#xff1f;在客户端处于 FIN_WAIT_2 状态时&#xff0c;如果此时收到了乱序的来自服务端的 FIN 报文&#xff0c;客户端会如何处理&#xff1f;何时进入 TIME_WAIT 状态&#xff1f;TCP 四次挥手丢了怎么…

学习笔记十五——rust柯里化,看不懂 `fn add(x) -> impl Fn(y)` 的同学点进来!

&#x1f9e0; Rust 柯里化从零讲透&#xff1a;看不懂 fn add(x) -> impl Fn(y) 的同学点进来&#xff01; &#x1f354; 一、什么是柯里化&#xff1f;先用一个超好懂的生活比喻 假设你在点一个汉堡&#xff1a; 你说&#xff1a;我要点一个鸡腿汉堡&#xff01; 店员…

深入理解 TCP 协议 | 流量、拥塞及错误控制机制

注&#xff1a;本文为 “TCP 协议” 相关文章合辑。 原文为繁体&#xff0c;注意术语描述差异。 作者在不同的文章中互相引用其不同文章&#xff0c;一并汇总于此。 略作重排&#xff0c;如有内容异常&#xff0c;请看原文。 TCP 三向交握 (Three-way Handshake) 2016-12-21 …

PCL库编译指南

PCL(Point Cloud Library)的编译过程会根据不同操作系统有所差异。以下是详细的编译步骤&#xff1a; Linux/Ubuntu系统编译 1. 安装依赖项 bash sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sud…

【Linux】条件变量、基于阻塞队列的生产者消费者模型

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f310; C 语言 进程是资源分配的基本单位&#xff0c;线程是调度的基本单位&#xff0c;线程是在进程内部运行的&#xff08;是进程内部…

32-工艺品商城小程序

技术&#xff1a; 基于 B/S 架构 SpringBootMySQLvueelementuiuniapp 环境&#xff1a; Idea mysql maven jdk1.8 node 可修改为其他类型商城 用户端功能 1.系统首页展示轮播图及工艺品列表 2.分类模块:展示产品的分类类型 3.购物车:进行商品多选结算 或者批量管理操作 4.…

SLAM | 激光SLAM中的退化问题

在激光SLAM中,判断退化环境的核心是通过数学建模分析环境特征对位姿估计的约束能力。除了LOAM中提出的退化因子D外,还存在多种基于表达式和阈值设定的方法。以下是几种典型方法及其实现原理: 1. 协方差矩阵特征值分析 原理:通过分析点云协方差矩阵的特征值分布,判断环境中…

【2025最新版】火鸟门户v8.5系统源码+PC、H5、小程序 +数据化大屏插件

一.介绍 火鸟地方门户系统V8.5源码 系统包含4端&#xff1a; PCH5小程序APP 二.搭建环境 系统环境&#xff1a;CentOS、 运行环境&#xff1a;宝塔 Linux 网站环境&#xff1a;Nginx 1.2.22 MySQL 5.6 PHP-7.4 常见插件&#xff1a;fileinfo &#xff1b; redis 三.测…

PHP腾讯云人脸核身获取NONCE ticket

参考腾讯云官方文档&#xff1a; 人脸核身 获取 NONCE ticket_腾讯云 前提条件&#xff0c;已经成功获取了access token。 获取参考文档&#xff1a; PHP腾讯云人脸核身获取Access Token-CSDN博客 public function getTxFaceNonceTicket($uid) {$access_token file_get_c…

多人3D游戏完整实现方案

以下是一份完整的代码实现方案,涵盖架构设计、核心模块实现和部署流程。我们以 多人3D游戏 为例,结合之前讨论的Nano服务端框架和Unity客户端: 技术栈 模块技术选型服务端Golang + Nano框架 + MongoDB客户端Unity 2022 + C# + Mirror Networking通信协议Protobuf + WebSock…

【Linux我做主】GDB调试工具完全指南

Linux下GDB调试工具完全指南&#xff1a;25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB&#xff08;GNU Debugger&#xff09;是Linux开发中不可或缺的调试工具&#xff0c;尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验&#xff0…

QT中栅格模式探索

1、Qt中选择了栅格模式&#xff0c;如下图所示&#xff1a; 2、在进行整个大的UI界面布局时&#xff0c;需了解每个控件所需要选择的属性sizePolicy。 sizePolicy包含如下几种选择&#xff1a; 3、举个例子&#xff1a;此时整个UI界面&#xff0c;我采用了栅格模式&#xf…

【计算机网络】3数据链路层①

这篇笔记专门讲数据链路层的功能。 2.功能 数据链路层的主要任务是让帧在一段链路上或一个网络中传输。 2.1.封装成帧(组帧) 解决的问题:①帧定界②帧同步③透明传输 实现组帧的方法通常有以下种。 2.1.1.字符计数法 原理:在每个帧开头,用一个定长计数字段来记录该…

[区块链lab2] 构建具备加密功能的Web服务端

实验目标&#xff1a; 掌握区块链中密码技术的工作原理。在基于Flask框架的服务端中实现哈希算法的加密功能。 实验内容&#xff1a; 构建Flash Web服务器&#xff0c;实现哈希算法、非对称加密算法的加密功能。 实验步骤&#xff1a; 哈希算法的应用&#xff1a;创建hash…

蓝桥杯之前缀和

一维前缀 解题思路 看到“区间之和”问题&#xff0c;直接想到“前缀和” 前缀和的核心公式&#xff1a; sum[i]sum[i−1]a[i] 利用前缀和求区间和 [l,r] 的公式&#xff1a; 区间和sum[r]−sum[l−1] 解题步骤模板 输入数组&#xff1a; 读取数组长度 n 和查询次数 m。 读…

【学习笔记】计算机网络(八)—— 音频/视频服务

第8章 互联网上的音频/视频服务 文章目录 第8章 互联网上的音频/视频服务8.1概述8.2 流式存储音频/视频8.2.1 具有元文件的万维网服务器8.2.2 媒体服务器8.2.3 实时流式协议 RTSP 8.3 交互式音频/视频8.3.1 IP 电话概述8.3.2 IP电话所需要的几种应用协议8.3.3 实时运输协议 RTP…

【WRF运行】解决metgrid生成文件太大无内存!

目录 方法:改变工作目录运行 metgrid.exe参考由于我的运行内存过小,当研究区较大时,metgrid生成文件内存太大,导致每次运行都报错,此时可更改工作目录(空余文件夹)以运行 metgrid.exe(并非必须在wrf安装目录下运行!!!)。 metgrid.exe 本身不支持直接通过参数或 nam…