Leetcode - 周赛446

news2025/4/25 3:34:32

目录

  • 一、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 k
        int 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.coloradmin.cn/o/2342110.html

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

相关文章

时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库

小T导读&#xff1a;胜软科技在石油石化行业中选择使用 TDengine 处理时序数据&#xff0c;不仅显著降低了运维数据库的成本&#xff0c;也大幅减少了存储空间的占用&#xff0c;实现了从原有的 40 多套 Oracle 数据库向仅 9 套 TDengine集群的精简替换。在迁移过程中&#xff…

macOS 系统设置息屏情况下,PHP等后台脚本继续执行

在 macOS 系统下&#xff0c;当屏幕息屏或合上盖子时&#xff0c;后台脚本程序是否会继续运行&#xff0c;主要取决于以下几个因素&#xff1a; 1. 系统睡眠状态的影响 默认情况&#xff1a;合盖/息屏后&#xff0c;Mac 会进入「睡眠模式」&#xff08;部分硬件休眠&#xff…

Prompt-Tuning 提示词微调

1. Hard Prompt 定义&#xff1a; Hard prompt 是一种更为具体和明确的提示&#xff0c;要求模型按照给定的信息生成精确的结果&#xff0c;通常用于需要模型提供准确答案的任务. 原理&#xff1a; Prompt Tuning原理如下图所示&#xff1a;冻结主模型全部参数&#xff0c;在…

asp.net core webapi+efcore

简洁的restfull风格 目前c#提供了多种风格的web编程&#xff0c;因为微软有自己的前端&#xff0c;所以集成了很多内容&#xff0c;不过基于现在编程前后端分离的模式&#xff0c;webapi是合适的。 webapi 目前网络上有很多介绍&#xff0c;不反复说这个了。在建立控制器时&…

前端渲染pdf文件解决方案-pdf.js

目录 一、前言 二、简介 1、pdf.js介绍 2、插件版本参数 三、通过viewer.html实现预览&#xff08;推荐&#xff09; 1、介绍 2、部署 【1】下载插件包 【2】客户端方式 【3】服务端方式&#xff08;待验证&#xff09; 3、使用方法 【1】预览PDF文件 【2】外部搜索…

从边缘到云端,如何通过时序数据库 TDengine 实现数据的全局洞

在当今数字化转型加速的背景下&#xff0c;海量的数据生成和实时处理需求已成为企业面临的关键挑战。无论是物联网设备、工业自动化系统&#xff0c;还是智能城市的各类传感器&#xff0c;数据的采集、传输与分析效率&#xff0c;直接影响企业的决策与运营。为此&#xff0c;TD…

2025.04.23【Treemap】树状图数据可视化指南

Multi-level treemap How to build a treemap with group and subgroups. Customization Customize treemap labels, borders, color palette and more 文章目录 Multi-level treemapCustomization Treemap 数据可视化指南Treemap 的基本概念为什么使用 TreemapTreemap 的应用…

蓝桥杯 15.小数第n位

小数第n位 原题目链接 题目描述 我们知道&#xff0c;整数做除法时&#xff0c;有时会得到有限小数&#xff0c;有时会得到无限循环小数。 如果我们把有限小数的末尾加上无限多个 0&#xff0c;它们就具有了统一的形式。 本题的任务是&#xff1a;在上述约定下&#xff0c…

用高斯溅射技术跨越机器人模拟与现实的鸿沟:SplatSim 框架解析

在机器人领域&#xff0c;让机器人在现实世界中精准执行任务是大家一直追求的目标。可模拟环境和现实世界之间存在着不小的差距&#xff0c;特别是基于 RGB 图像的操作策略&#xff0c;从模拟转移到现实时总是状况百出。 今天咱们就来聊聊 SplatSim 框架&#xff0c;看看它是怎…

AI大模型学习十一:‌尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio,实战运行成功

一、说明 用了ubuntu 25.04&#xff0c;内核为GNU/Linux 6.14.0-15-generic x86_64&#xff0c;升级了部分image&#xff0c;过程曲折啊 sealos 能干啥 对集群生命周期进行管理&#xff0c;一键安装高可用 Kubernetes 集群&#xff0c;增删节点清理集群自恢复等 通过 sealos…

如何在 Python 项目中引入 Rust 函数

目录 1. 初始化 Python 项目2. 添加 Rust 开发工具3. 初始化 Rust 项目4. 开发模式构建5. 验证模块是否成功安装6. 测试 Rust 函数总结 (封面pid: 129416070) Python 是一门非常流行的编程语言&#xff0c;具有易于使用和开发的特点。然而&#xff0c;随着项目需求的增长和性能…

聊聊SpringAI流式输出的底层实现?

在 Spring AI 中&#xff0c;流式输出&#xff08;Streaming Output&#xff09;是一种逐步返回 AI 模型生成结果的技术&#xff0c;允许服务器将响应内容分批次实时传输给客户端&#xff0c;而不是等待全部内容生成完毕后再一次性返回。 这种机制能显著提升用户体验&#xff…

MySQL 8 自动安装脚本(CentOS-7 系统)

文章目录 一、MySQL 8 自动安装脚本脚本说明&#x1f4cc; 使用脚本前提条件1. 操作系统2. 用户权限3. 网络要求 &#x1f4cc; 脚本的主要功能1. 环境检查2. MySQL 自动安装3. 自动配置 MySQL4. 防火墙配置5. 验证与输出 &#x1f4cc; 适用场景 二、执行sh脚本1. 给予脚本执行…

在Notepad++中使用NppAtyle插件格式化代码

参考链接&#xff1a;Artistic Style 使用教程&#xff08;中文版&#xff09; 1.下载NppAStyle插件&#xff08;根据版本&#xff0c;选择32位或者64位&#xff09; https://github.com/ywx/NppAStyle/releases 2.菜单栏中选择&#xff1a;插件->打开插件文件夹 创建文件夹…

拼多多面经,暑期实习Java一面

项目中的设计模式 mysql连接过程&#xff0c;索引&#xff0c;分库分表场景&#xff0c;路由策略 redis使用场景&#xff0c;分片集群怎么搭建与路由&#xff0c;数据一致性 分布式锁怎么用的&#xff0c;具体使用参数 线程池怎么用的&#xff0c;过程 sql having 分布式事务 如…

FramePack:让视频生成更高效、更实用

想要掌握如何将大模型的力量发挥到极致吗&#xff1f;叶梓老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具&#xff08;限时免费&#xff09;。 1小时实战课程&#xff0c;您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型&#xff0c;以发挥其…

ctfshow web8

前言 学习内容&#xff1a;简单的盲注脚本的书写 web8 这个题目题目手动注入很麻烦 主要是他过滤了 union 空格和 过滤了union的解决方法 1、使用盲注(报错注入和盲注) 2、使用时间盲注 3、堆叠注入 盲注脚本的书写 首先他是有注入点的 然后熟悉requests包的使用 …

gem5-gpu教程03 当前的gem5-gpu软件架构(因为涉及太多专业名词所以用英语表达)

Current gem5-gpu Software Architecture 这是当前gem5-gpu软件架构的示意图。 Ruby是在gem5-gpu上下文中用于处理CPU和GPU之间内存访问的高度可配置的内存系统 CudaCore (src/gpu/gpgpu-sim/cuda_core.*, src/gpu/gpgpu-sim/CudaCore.py) Wrapper for GPGPU-Sim shader_cor…

TDengine 查询引擎设计

简介 TDengine 作为一个高性能的时序大数据平台&#xff0c;其查询与计算功能是核心组件之一。该平台提供了丰富的查询处理功能&#xff0c;不仅包括常规的聚合查询&#xff0c;还涵盖了时序数据的窗口查询、统计聚合等高级功能。这些查询计算任务需要 taosc、vnode、qnode 和…

【官方正版,永久免费】Adobe Camera Raw 17.2 win/Mac版本 配合Adobe22-25系列软

Adobe Camera Raw 2025 年 2 月版&#xff08;版本 17.2&#xff09;。目前为止最新版新版已经更新2个月了&#xff0c;我看论坛之前分享的还是2024版&#xff0c;遂将新版分享给各位。 Adobe Camera Raw&#xff0c;支持Photoshop&#xff0c;lightroom等Adobe系列软件&#…