Leetcode - 140双周赛

目录

一,3300. 替换为数位和以后的最小元素

二,3301. 高度互不相同的最大塔高和

三,3302. 字典序最小的合法序列

四,3303. 第一个几乎相等子字符串的下标


一,3300. 替换为数位和以后的最小元素

本题直接暴力求解,代码如下:

class Solution {public int minElement(int[] nums) {int mn = Integer.MAX_VALUE;for(int x : nums){int res = 0;while(x > 0){res += x%10;x /= 10;}mn = Math.min(mn, res);}return mn;}
}

二,3301. 高度互不相同的最大塔高和

本题求最大总高度,从贪心的角度想,那必然是每个塔的高度越大越好,所以可以将maximumHeight 数组从大到小排序,使用一个变量 p 记录当前所能取到的最大值,对于下一个数x来说:

  • 如果 x < p,就说明当前塔可以选取的高度为[1,x],一定选 x,这时将 p = x;
  • 如果 x >= p,由于数组从大到小排序的,所以当 x >= p 时,就说明 x 已经在之前取过了,此时塔可以选取的高度为[1,p-1](注:p是上一次取过的值,不能再取),一定选 p-1,此时将 p = p-1。
  • 注:题目要求所有塔的高度不能 <= 0,所以要加一个额外判断,如果 p <= 0,返回 -1

代码如下:

class Solution {public long maximumTotalSum(int[] h) {int n = h.length;long res = 0;Arrays.sort(h);int p = Integer.MAX_VALUE;for(int i=n-1; i>=0; i--){p = h[i] < p ? h[i] : p - 1; if(p <= 0) return -1;res += p;}return res;}
}

三,3302. 字典序最小的合法序列

本题可以使用前后缀分解的方式来解决,可以预处理 suf[i]:对于 w1[i:] 的子序列来说,他能匹配w2的最长后缀为 w2[j:](j=suf[i]),然后直接枚举修改的下标:

  • 如果 w1[i] == w2[j],直接把 i 加入答案。因为题目要求字典序最小
  • 如果 w1[i] != w2[j],那么需要判断 suf[i+1] 是否小于等于 j+1,如果是,说明修改 w2[i] 后w2[j+1:] 是 w1[i+1:] 的子序列,此时一定要修改(只能修改一次),因为题目要求字典序最小,将 i 加入答案。

代码如下:

class Solution {public int[] validSequence(String word1, String word2) {char[] w1 = word1.toCharArray();char[] w2 = word2.toCharArray();int m = w1.length, n = w2.length;int[] suf = new int[m+1];//suf[i]:w2[j:]是w1[i:]的子序列(j=suf[i])suf[m] = n;for(int i=m-1, j=n-1; i>=0; i--){if(j>=0 && w1[i] == w2[j]){j--;}suf[i] = j + 1;}int[] ans = new int[n];int j = 0;boolean changed = false;for(int i=0; i<m; i++){if(w1[i] == w2[j] || !changed && suf[i+1]<=j+1){if(w1[i] != w2[j]){changed = true;}ans[j++] = i;if(j == n) return ans;}}return new int[0];}
}

四,3303. 第一个几乎相等子字符串的下标

本题和T3类似,还是使用前后缀分解,只不过这里匹配的不是子序列而是子串,所以这里使用z函数来预处理前后缀,然后枚举修改的下标,判断它的前后缀加起来是否能组成 pattern。

代码如下:

class Solution {public int minStartingIndex(String s, String pattern) {int[] pre = zBox(pattern + s);int[] suf = zBox(rev(pattern) + rev(s));int m = s.length(), n = pattern.length();for(int i=n; i<=m; i++){if(pre[i] + suf[n+m-i] >= n-1)return i - n;}return -1;}int[] zBox(String s){char[] ch = s.toCharArray();int n = ch.length;int[] z = new int[n];z[0] = n;int l = 0, r = 0;for(int i=1; i<n; i++){z[i] = i < r ? Math.min(z[i-l], r-i) : 0;while(i + z[i] < n && ch[z[i]] == ch[i+z[i]]){l = i;r = i + z[i];z[i]++;}}return z;}String rev(String s){return new StringBuilder(s).reverse().toString();}
}

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

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

相关文章

【hot100-java】【将有序数组转换为二叉搜索树】

二叉树篇 BST树 递归直接实现。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNo…

wpf实现新用户页面引导

第一步 第二部 部分代码: private void show(int xh, FrameworkElement fe, string con, Visibility vis Visibility.Visible) {Point point fe.TransformToAncestor(Window.GetWindow(fe)).Transform(new Point(0, 0));//获取控件坐标点RectangleGeometry rg new Rectangl…

Deathnote解题过程

主机扫描&#xff0c;发现192.168.1.194 arp-scan -l 端口扫描&#xff0c;发现80和22端口 nmap -sS 192.168.1.194 访问80端口发现自动跳转到http://deathnote.vuln/wordpress添加绑定地址就可以访问了 vim /etc/hosts 192.168.1.194 deathnote.vuln 访问发现并没有什么东西…

无人值守安装文件

一般配合BypassUAC 原理 一些 windows 无人值守安装文件中含有用户的明文或 base64 编码后的密文。 无人值守安装文件中的密码不一定是管理员密码&#xff0c;它也可能是普通用户的密码或者服务账户的密码。 不过&#xff0c;在无人值守文件&#xff08;如 sysprep.xml 或 …

11.数据结构与算法-线性表的案例分析与实现

案例2.1-一元多项式的运算 案例2.2-稀疏多项式的计算 图书信息管理系统

2-112基于matlab的协同干扰功率分配模型

基于matlab的协同干扰功率分配模型&#xff0c;带操作界面的功率分配GUI&#xff0c;可以实现对已有功率的分配优化&#xff0c;可以手动输入参数值。4个干扰山区分二批总干扰功率&#xff0c;每个扇区包括威胁总系数、综合压制概率、目标函数增量等。程序已调通&#xff0c;可…

NVIDIA NVLink-C2C

NVIDIA NVLink-C2C 文章目录 前言一、介绍1. 用于定制芯片集成的超快芯片互连技术2. 构建半定制芯片设计3. 使用 NVLink-C2C 技术的产品 二、NVLink-C2C 技术优势1. 高带宽2. 低延迟3. 低功率和高密度4. 行业标准协议 前言 将 NVLink 扩展至芯片级集成 一、介绍 1. 用于定制芯…

【Java的SPI机制】Java SPI机制:实现灵活的服务扩展

在Java开发中&#xff0c;SPI&#xff08;Service Provider Interface&#xff0c;服务提供者接口&#xff09;机制是一种重要的设计模式&#xff0c;它允许在运行时动态地插入或更换组件实现&#xff0c;从而实现框架或库的扩展点。本文将深入浅出地介绍Java SPI机制&#xff…

Linux驱动开发(速记版)--设备模型

第八十章 设备模型基本框架-kobject 和 kset 80.1 什么是设备模型 设备模型使Linux内核处理复杂设备更高效。 字符设备驱动适用于简单设备&#xff0c;但对于电源管理和热插拔&#xff0c;不够灵活。 设备模型允许开发人员以高级方式描述硬件及关系&#xff0c;提供API处理设备…

kaggle实战3RossmanStore商店销售额预测XgBoost解决回归问题案例1

kaggle实战2信用卡反欺诈逻辑回归模型案例1 数据集下载地址 https://download.csdn.net/download/AnalogElectronic/89844637 https://tianchi.aliyun.com/dataset/89785 加载数据 #预测销售额 回归问题 import numpy as np import pandas as pd import matplotlib.pyplot a…

Pikachu-Unsafe FileUpload-客户端check

上传图片&#xff0c;点击查看页面的源码&#xff0c; 可以看到页面的文件名校验是放在前端的&#xff1b;而且也没有发起网络请求&#xff1b; 所以&#xff0c;可以通过直接修改前端代码&#xff0c;删除 checkFileExt(this.value) 这部分&#xff1b; 又或者先把文件名改成…

GS-SLAM论文阅读笔记-MGSO

前言 MGSO首字母缩略词是直接稀疏里程计(DSO)&#xff0c;我们建立的光度SLAM系统和高斯飞溅(GS)的混合。这应该是第一个前端用DSO的高斯SLAM&#xff0c;不知道这个系统的组合能不能打得过ORB-SLAM3&#xff0c;以及对DSO会做出怎么样的改进以适应高斯地图&#xff0c;接下来…

随笔(四)——代码优化

文章目录 前言1.原本代码2.新增逻辑3.优化逻辑 前言 原逻辑&#xff1a;后端data数据中返回数组&#xff0c;数组中有两个对象&#xff0c;一个是属性指标&#xff0c;一个是应用指标&#xff0c;根据这两个指标展示不同的多选框 1.原本代码 getIndicatorRange(indexReportLi…

cherry-markdown开源markdown组件详细使用教程

文章目录 前言开发定位目标调研技术方案前提工作量安排数据库表设计实现步骤1、引入依赖2、实现cherry-markdown的vue组件&#xff08;修改上传接口路径&#xff09;3、支持draw.io组件4、支持展示悬浮目录toc前端使用&#xff1a;编辑状态使用cherry-markdown的vue组件前端使用…

【AUTOSAR 基础软件】COM模块详解(通信)

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中COM模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解COM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工…

Pikachu-Unsafe Fileupload-服务端check

MIME MIME是Multipurpose Internet Mail Extensions &#xff08;多用途互联网邮件扩展类型&#xff09;的缩写&#xff0c;用来表示文件、文档、或字节流的性质和格式。是设定某种扩展名的文件用一种应用程序来打开的方式类型&#xff0c;当该扩展名文件被访问的时候&#xff…

CNN模型对CIFAR-10中的图像进行分类

代码功能 这段代码展示了如何使用 Keras 和 TensorFlow 构建一个卷积神经网络&#xff08;CNN&#xff09;模型&#xff0c;用于对 CIFAR-10 数据集中的图像进行分类。主要功能包括&#xff1a; 加载数据&#xff1a;从 CIFAR-10 数据集加载训练和测试图像。 数据预处理&#…

不只是前端,后端、产品和测试也需要了解的浏览器知识(二)

目录标题 一、业务系统呈现给用户的节点1. 输入 URL 并解析1.1 用户输入 URL 并按下回车键1.2 浏览器解析 URL1.3 DNS 解析 2. 建立连接、发送请求并接收响应2.1 建立 TCP 连接2.2 发送 HTTP 请求2.3 服务器处理请求2.4 发送 HTTP 响应2.5 浏览器接收响应 3. 解析和加载资源、渲…

【Android】设备操作

本文介绍App开发常用的一些设备操作&#xff0c;主要包括如何使用摄像头进行拍照、如何使用麦克风进行录音并结合摄像头进行录像、如何播放录制好的音频和视频、如何使用常见传感器实现业务功能、如何使用定位功能获取位置信息、如何利用短距离通信技术实现物联网等。 摄像头 …

【韩顺平Java笔记】第7章:面向对象编程(基础部分)【214-226】

文章目录 214. 递归解决什么问题215. 递归执行机制1216. 递归执行机制2217 递归执行机制3217.1 阶乘218. 递归执行机制4219. 斐波那契数列220. 猴子吃桃221. 222. 223. 224. 老鼠出迷宫1,2,3,4224.1 什么是回溯 225. 汉诺塔226. 八皇后 214. 递归解决什么问题 简单的说: 递归就…