【力扣周赛】第 367 场周赛(⭐二维数组当成一维数组,前后缀分解)

news2024/11/16 11:42:14

文章目录

  • 竞赛链接
  • Q1:100096. 找出满足差值条件的下标 I
    • 竞赛时代码——暴力双循环
  • Q2:100084. 最短且字典序最小的美丽子字符串
    • 竞赛时代码——双指针
  • Q3:100101. 找出满足差值条件的下标 II
    • 竞赛时代码——记录可用最大最小值下标
  • Q4:8026. 构造乘积矩阵⭐(重要思想:把二维数组当成一维的)
    • 解法——前后缀分解
    • 相关题目——前后缀分解题单📕
  • 成绩记录

竞赛链接

https://leetcode.cn/contest/weekly-contest-367/

Q1:100096. 找出满足差值条件的下标 I

https://leetcode.cn/problems/find-indices-with-index-and-value-difference-i/description/
在这里插入图片描述

提示:
1 <= n == nums.length <= 100
0 <= nums[i] <= 50
0 <= indexDifference <= 100
0 <= valueDifference <= 50

竞赛时代码——暴力双循环

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

Q2:100084. 最短且字典序最小的美丽子字符串

https://leetcode.cn/problems/shortest-and-lexicographically-smallest-beautiful-string/description/

在这里插入图片描述
提示:
1 <= s.length <= 100
1 <= k <= s.length

竞赛时代码——双指针

双指针取符合条件的子字符串,最后取出最小的那个。

class Solution {
    public String shortestBeautifulSubstring(String s, int k) {
        List<String> ans = new ArrayList<>();
        int mnL = Integer.MAX_VALUE, cnt = 0;
        for (int l = 0, r = 0; r < s.length(); ++r) {
            if (s.charAt(r) == '1') cnt++;
            while ((cnt > k || s.charAt(l) == '0') && l < r) {
                cnt -= (s.charAt(l++) == '1'? 1: 0);
            }
            if (cnt == k) {
                int len = r - l + 1;
                if (len < mnL) ans.clear();
                mnL = Math.min(mnL, len);
                if (len == mnL) ans.add(s.substring(l, r + 1));
            }
        }
        Collections.sort(ans);
        return ans.size() > 0? ans.get(0): "";
    }
}

Q3:100101. 找出满足差值条件的下标 II

https://leetcode.cn/problems/find-indices-with-index-and-value-difference-ii/description/

在这里插入图片描述
提示:
1 <= n == nums.length <= 10^5
0 <= nums[i] <= 10^9
0 <= indexDifference <= 10^5
0 <= valueDifference <= 10^9

竞赛时代码——记录可用最大最小值下标

class Solution {
    public int[] findIndices(int[] nums, int indexDifference, int valueDifference) {
        int n = nums.length;
        int mnId = 0, mxId = 0;         // 记录可用最大值和最小值的下标
        for (int l = 0, r = indexDifference; r < n; ++r, ++l) {
            if (nums[l] > nums[mxId]) mxId = l;
            if (nums[l] < nums[mnId]) mnId = l;
            if (nums[r] - nums[mnId] >= valueDifference) return new int[]{mnId, r};
            if (nums[mxId] - nums[r] >= valueDifference) return new int[]{mxId, r};
        }
        return new int[]{-1, -1};
    }
}

Q4:8026. 构造乘积矩阵⭐(重要思想:把二维数组当成一维的)

https://leetcode.cn/problems/construct-product-matrix/description/

在这里插入图片描述

提示:
1 <= n == grid.length <= 10^5
1 <= m == grid[i].length <= 10^5
2 <= n * m <= 10^5
1 <= grid[i][j] <= 10^9

解法——前后缀分解

https://leetcode.cn/problems/construct-product-matrix/solutions/2483137/zhou-sai-chang-kao-qian-hou-zhui-fen-jie-21hr/
核心思想把矩阵想象成一维的,我们需要算出每个数左边所有数的乘积,以及右边所有数的乘积,这都可以用递推得到。

class Solution {
    public int[][] constructProductMatrix(int[][] grid) {
        final int MOD = 12345;
        int m = grid.length, n = grid[0].length;
        int[][] p = new int[m][n];

        long suf = 1;       // 后缀乘积
        for (int i = m - 1; i >= 0; --i) {
            for (int j = n - 1; j >= 0; --j) {
                p[i][j] = (int)suf;
                suf = suf * grid[i][j] % MOD;
            }
        }

        long pre = 1;       // 前缀乘积
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                p[i][j] = (int)(p[i][j] * pre % MOD);
                pre = pre * grid[i][j] % MOD;
            }
        }

        return p;
    }
}

相关题目——前后缀分解题单📕

见:【算法】前后缀分解题单

成绩记录

在这里插入图片描述

最后一题想了还久还是没做出来。。遗憾掉分
在这里插入图片描述

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

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

相关文章

MATLAB模拟的电磁学时域有限差分法(电子书PDF)

摘要: MATLAB语言具有编程简单&#xff0c;并可以给出精美图像的特点&#xff0c;它已成为理工科大学生必备的系统工具平台。其完备的工具箱功能&#xff0c;使得MATLAB日益受到大学生和工程师们的喜爱。《MATLAB模拟的电磁学时域有限差分法》 目录 第1章 FDTD简介 1.1 时域有限…

Bootstrap的列表组相关知识

目录 01-列表组的相关基础知识02-一个简单的列表组示例03-激活或禁用列表组的一行或多行04-设置列表项的颜色05-给列表项添加徽章 01-列表组的相关基础知识 Bootstrap的list-group是一个用于创建列表组件的CSS类&#xff0c;通常用于显示一个项目列表&#xff0c;如导航菜单或…

Spark内核

环境准备及提交流程 底层通信协议 Akka通信协议&#xff0c;收发邮箱是一体的Netty通信协议&#xff0c;收发邮箱是分开的 任务调度 任务的最小单位是线程。失败重试&#xff0c;会记录失败的次数&#xff0c;如果超过最大重试次数&#xff0c;宣告Application失败。失败的…

knife4j-openapi3 无法使用swagger注解@ApiModelProperty

问题描述 当使用knife4j springboot3&#xff0c; 发现无法使用 swagger注解ApiModelProperty需要单独导入一个包但是即使导入这个包也不生效&#xff0c;即使配置了description也为空 原因 简单来说&#xff1a;swagger2 > swagger3的时候出现了破坏性的更新 将ApiMode…

Docker(五)、容器间数据共享~volume

容器间数据共享&#xff5e;volume 一、简单了解二、有两种通过命令设置数据卷的方法一&#xff09;、方式1. 通过 -v 挂载宿主机目录1、格式2、浅实践下 二&#xff09;、方式2.实现形式&#xff1a;通过共享容器内挂载点--volumes-from&#xff0c;其他容器指定此挂载点1、格…

基于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;…

Java操作Elasticsearch(新增数据)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

vscode使用CSScomb插件

1. 安装 在设置中搜索csscomb&#xff0c;把Csscomb: Format On Save勾上 然后去edit in settings.json配置 2.使用 2.1 用官网提供的三种方法 https://github.com/csscomb/csscomb.js/tree/master/config 2.2 自定义 CSS 书写顺序规则可以参考这个荐腾讯 AollyTeam 团队的…

CI2454 2.4g无线MCU芯片应用

Ci2454集成MCU芯片 | Ci2454是一款集成无线收发器和 8 位 RISC&#xff08;精简指令集&#xff09;MCU 的SOC芯片。 #Ci2454芯片 集成MCU芯片# 中国芯片# 无线收发器特性&#xff1a; 工作在 2.4GHz ISM 频段 调制方式&#xff1a;GFSK/FSK 数据速率&#xff1a;2Mbps/1Mbps…

交换机控制在同一个网段内的终端,用hybrid接口实现不同的IP通和不通。

实验效果&#xff1a;pc1和pc2不能通&#xff0c;但pc1和pc2分别可以和pc3通。 通过这个实验可以彻底掌握数据包在交换机上的进去的类型状态。 sw1配置&#xff1a; [sw1]dis current-configuration sysname sw1 vlan batch 10 20 100 interface GigabitEthernet0/0/1 port h…

南丁格尔玫瑰图

目录 由来 效果图 echarts官网找相似图 将南丁格尔玫瑰图引进html页面中 引入echarts 准备容器 初始化echarts实例对象 指定配置项和数据&#xff08;官网给的option&#xff09; 将配置项给echarts 自定义南格丁尔玫瑰图 修改颜色 修改玫瑰图大小 修改图的模式为半…

springBoot--web--路径匹配

路径匹配 前言在配置文件中配置路径匹配结果 前言 spring5.3之后加入了更多的请求路径匹配的实现策略 以前只支持antPathMatcher策略&#xff0c;现在提供了PathPatternParse策略&#xff0c;并且可以让我们指定到底使用哪种策略 PathPatternParser: 在jmh基准测试下&#xff…

SAP-MM-收货操作报错123

以下的报错都是收货时产生的&#xff1a; 1、消息号M7097&#xff1a;该物料不可能有库存记账 这个消息可以初步判断是因为物料类型的双更新没有勾选 用TCODE&#xff1a;OMS2,找到对应的物料类型&#xff0c;维护双更新。 2、消息号&#xff1a;M8147 不能为条目7333 GBB确立…

使用C#和Flurl.Http库的下载器程序

根据您的要求&#xff0c;我为您编写了一个使用C#和Flurl.Http库的下载器程序&#xff0c;用于下载凤凰网的图片。以下是一个简单的示例代码&#xff1a; using System; using Flurl.Http;namespace DownloadImage {class Program{static void Main(string[] args){string url…

STM32下载程序,可以使用串口了,但是要对的boot进行设置,以及boot的使用,直接烧录,可以运行,但是下次复位,得先换BOOT0为0

STM32下载程序串口下载stm32程序 注意&#xff1a;直接烧录&#xff0c;可以运行&#xff0c;但是下次复位&#xff0c;得先换BOOT0为0 有的朋友可能遇到过这种情况&#xff1a;程序第一次下载的时候可以运行&#xff0c;但是掉电重启之后&#xff0c;程序就不能运行了。这种情…

利用Python爬虫获取某乎热榜

如今&#xff0c;某乎必须要登录才能查看相关话题内容&#xff0c;给我们的日常造成了极大的不便&#xff0c;今天我就教大家如何利用简单的代码&#xff0c;绕开登录限制。 准备工作 配置好python运行环境&#xff0c;推荐 pycharm。复制下面的源代码&#xff0c;运行&#x…

OnlyOffice documentType类型值

参考官网说明&#xff1a; https://api.onlyoffice.com/editors/config/#documentType 其值为&#xff1a;word | cell | slide

Java数字处理类--Math类--随机数

1. 生成随机数方法&#xff1a; 1.1 Math.random()方法 1.2 Random类 2. Math.random()方法 2.1 Math.random():产生0~1之间的double型随机数 package MathInfo;public class MathRandom {//定义产生偶数的公式&#xff1a;int num (int) num1 (int) (Math.random() * (num…

信息系统基础选择题真题

信息系统基础选择题真题 真题中超纲的较多 纯理论记忆 企业信息化 企业资源计划ERP 客户关系管理CRM 供应链管理SCM 决策支持系统DSS 论文&#xff1a; 企业集成 企业应用集成&#xff08;常考&#xff09;应用集成数据交换企业集成平台&#xff08;常考&#xff09;企业信息集…

分析RPA流程自动化的挑战和解决方案

随着数字化工具和自动化解决方案的日益成熟&#xff0c;各行各业发掘到RPA机器人流程自动化技术的先进性&#xff0c;逐渐规模化部署RPA。 为了更好地推进RPA的实施&#xff0c;金智维在这里分享一些运用这项技术时面临的共同挑战&#xff0c;并给出针对性的解决方案。 组织架构…