算法提升——LeetCode383场周赛总结
周赛题目
边界上的蚂蚁
边界上有一只蚂蚁,它有时向左走,有时向右走。
给你一个非零整数数组nums。蚂蚁会按顺序读取nums中的元素,从第一个元素开始直到结束。每一步,蚂蚁会根据当前元素的值移动:
如果nums[i]<0,向左移动-nums[i]单位。
如果nums[i]>0,向右移动nums[i]单位。
返回蚂蚁返回到边界上的次数。
解题思路
本题是一道简单题,只要看懂题目,知道是求每次+nums[i]后的值为0的次数即可。
class Solution {public int returnToBoundaryCount(int[] nums) {int result=0;int target=0;for(int tem:nums){target+=tem;if (target==0){result++;}}return result;}
}
将单词恢复初始状态所需的最短时间 I
给你一个下标从0开始的字符串word和一个整数k。
在每一秒,你必须执行以下操作:
移除word的前k个字符。
在word的末尾添加k个任意字符。
注意添加的字符不必和移除的字符相同。但是,必须在每一秒钟都执行两种操作。
返回将word恢复到其初始状态所需的最短时间(该时间必须大于零)。
解题思路
本题需要至少切割1次,最多切割len/k向上取整次必然可以恢复。因为每次切割后面是拼接任意字符,所以只需要考虑切割后剩余的字符串是不是原来word的开头即可。
class Solution {public int minimumTimeToInitialState(String word, int k) {int result=0;int start=k;int len=word.length();int sum = (int) Math.ceil((double) len / k);while(start<len){result++;if (word.indexOf(word.substring(start))==0){return result;}start+=k;}return sum;}
}
找出网格的区域平均强度
给你一个下标从0开始、大小为mxn的网格image,表示一个灰度图像,其中image[i][j]表示在范围[0…255]内的某个像素强度。另给你一个非负整数threshold。
如果image[a][b]和image[c][d]满足|a-c|+|b-d|==1,则称这两个像素是相邻像素。
区域是一个3x3的子网格,且满足区域中任意两个相邻像素之间,像素强度的绝对差小于或等于threshold。
区域内的所有像素都认为属于该区域,而一个像素可以属于多个区域。
你需要计算一个下标从0开始、大小为mxn的网格result,其中result[i][j]是image[i][j]所属区域的平均强度,向下取整到最接近的整数。如果image[i][j]属于多个区域,result[i][j]是这些区域的“取整后的平均强度”的平均值,也向下取整到最接近的整数。如果image[i][j]不属于任何区域,则result[i][j]等于image[i][j]。
返回网格result。
解题思路
遍历所有3*3的子网格,如果存在差值超过threshwold则跳过;如果合法则计算平均值。
public class Solution {public int[][] resultGrid(int[][] a, int threshold) {int m = a.length;int n = a[0].length;int[][] result = new int[m][n];int[][] cnt = new int[m][n];for (int i = 2; i < m; i++) {next: // 定义跳出标签for (int j = 2; j < n; j++) {// 检查左右相邻格子for (int x = i - 2; x <= i; x++) {if (Math.abs(a[x][j - 2] - a[x][j - 1]) > threshold || Math.abs(a[x][j - 1] - a[x][j]) > threshold) {continue next; // 不合法,跳出双重循环}}// 检查上下相邻格子for (int y = j - 2; y <= j; ++y) {if (Math.abs(a[i - 2][y] - a[i - 1][y]) > threshold || Math.abs(a[i - 1][y] - a[i][y]) > threshold) {continue next; // 不合法,跳出双重循环}}// 合法,计算 3x3 子网格的平均值int avg = 0;for (int x = i - 2; x <= i; x++) {for (int y = j - 2; y <= j; y++) {avg += a[x][y];}}avg /= 9;// 更新 3x3 子网格内的 resultfor (int x = i - 2; x <= i; x++) {for (int y = j - 2; y <= j; y++) {result[x][y] += avg; // 先累加,最后再求平均值cnt[x][y]++;}}}}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (cnt[i][j] == 0) { // (i,j) 不属于任何子网格result[i][j] = a[i][j];} else {result[i][j] /= cnt[i][j]; // 求平均值}}}return result;}
}
将单词恢复初始状态所需的最短时间 II
给你一个下标从0开始的字符串word和一个整数k。
在每一秒,你必须执行以下操作:
移除word的前k个字符。
在word的末尾添加k个任意字符。
注意添加的字符不必和移除的字符相同。但是,必须在每一秒钟都执行两种操作。
返回将word恢复到其初始状态所需的最短时间(该时间必须大于零)。
解题思路
这道题和第二道题截图思路是一样的,但是不能再用JDK自带的方法区解,会超时。从第二道题中我们能看出来本题的本质上计算s的后缀和s的最长公共前缀的长度,即使用哦个扩展KMP判断,如果最长公共前缀的长度大于等于后缀长度,说明操作可以恢复到初始值。
class Solution {public int minimumTimeToInitialState(String S, int k) {char[] s = S.toCharArray();int n = s.length;int[] z = new int[n];int l = 0, r = 0;for (int i = 1; i < n; i++) {if (i <= r) {z[i] = Math.min(z[i - l], r - i + 1);}while (i + z[i] < n && s[z[i]] == s[i + z[i]]) {l = i;r = i + z[i];z[i]++;}if (i % k == 0 && z[i] >= n - i) {return i / k;}}return (n - 1) / k + 1;}
}
总结
通过总结周赛的解法,学习到自己还有很多不足。同时也学到了一个平时开发不会用到的操作,就是如何用continue跳出双重循环。
后续因为本次题目中所使用到的KMP算法不甚了解,后续需要学习该算法,并输出一篇总结笔记。
相关文章:
算法提升——LeetCode383场周赛总结
周赛题目 边界上的蚂蚁 边界上有一只蚂蚁,它有时向左走,有时向右走。 给你一个非零整数数组nums。蚂蚁会按顺序读取nums中的元素,从第一个元素开始直到结束。每一步,蚂蚁会根据当前元素的值移动: 如果nums[i]<0…...
(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.1节( 带结果的Exit例程)
4.2.1 带结果的Exit例程 我们已经看到,从函数中返回结果所使用的语法与 C 语言家族的语法截然不同。不仅语法不同,行为也不同。为结果(或函数名)赋值并不像return语句那样终止函数。Object Pascal 开发人员经常利用这一特性&a…...
vuecli3 执行 npm run build 打包命令报错:TypeError: file.split is not a function
问题 今天有个项目在打包的时候遇到了一个问题,就是执行 npm run build 命令的时候报错了,如下: 解决 我排查了一下,模拟代码如下:在打包的时候用了 MinChunkSizePlugin const webpack require("webpack"…...
【Java 数据结构】对象的比较
Java中对象的比较 1. PriorityQueue中插入对象2. 元素的比较2.1 基本类型的比较2.2 对象比较的问题 3. 对象的比较3.1 覆写基类的equals3.2 基于Comparble接口类的比较3.3 基于比较器比较3.4 三种方式对比 4. 集合框架中PriorityQueue的比较方式5. 使用PriorityQueue创建大小堆…...
2024 Google Chrome 浏览器回退安装旧版本
2024 Google Chrome 浏览器回退安装旧版本 查看当前谷歌版本备份浏览器数据卸载浏览器双击重新安装旧版本浏览器 查看当前谷歌版本 详细参考:参考 笔记:最近谷歌浏览器更新后,用着总感觉别扭:不习惯 备份浏览器数据 ÿ…...
将数组中的各字符串都调整为指定长度调整原则:多删(删右侧多出的)少补(左侧补数字0)numpy.char.zfill()
【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将数组中的各字符串 都调整为指定长度 调整原则: 多删(删右侧多出的) 少补(左侧补数字0) numpy.char.zfill() [太阳]选择题 请问以…...
算法题目题单——图论
简介 本文为自己做的一部分图论题目,作为题单列出,持续更新。 题单由题目链接和题解两部分组成,题解部分提供简洁题意,代码仓库:Kaiser-Yang/OJProblems。 对于同一个一级标题下的题目,题目难度尽可能做…...
Maven提示Failure to find com.oracle:ojdbc14:jar:10.2.0.4.0
目录 问题 解决方案 1、下载oracle的驱动jar包 2、安装到本地仓库 3、检查本地仓库是否成功安装 4、Maven先clean ,再install。 问题 项目引入Oracle依赖后报错,显示为红色。 解决方案 1、下载oracle的驱动jar包 首先我们要去下载一个oracle的…...
深度学习的数据集制作、标注、处理相关软件
制作深度学习数据集通常涉及数据的采集、标注和预处理等步骤。以下是一些可用于制作和处理深度学习数据集的软件工具,以及它们的详细介绍: 数据采集和生成 Web爬虫工具 (如 Scrapy, Beautiful Soup) 描述:这些工具可以帮助你从网上自动抓取和…...
点击按钮打开自定义iframe弹窗
1、效果 点击按钮打开弹窗: 打开弹窗后: 2、代码 <!DOCTYPE html> <html><head><title>iframe弹窗</title><style>/* 使用媒体查询来实现响应式设计 */media (min-width: 768px) {.popup {width: 80%; /* 设置…...
LeetCode977 有序数组的平方
暴力解法是平方之后排序复杂度是nnlogn 优化解法是双指针i,j,i放数组首元素位置,j放数组末尾,每次比较i和j位置的数组元素大小,然后挑一个大的放在新的数组元素的指定末尾位置上。 当原始数组nums第一个元素大于零时&a…...
Windows自动化实现:系统通知和任务栏图标自定义
文章目录 Windows自动化的三个小工具系统通知任务栏图标使用pystray实现使用infi.systray实现 Windows自动化的三个小工具 系统通知 import win10toastwin10toast.ToastNotifier().show_toast("eee", "休息一下", icon_path"icon.ico", durati…...
Spring | Spring的“数据库开发“ (Srping JDBC)
目录: Spring JDBC1.Spring JDBC的核心类 ( JdbcTemplate类 )2.Srping JDBC 的配置3.JdbcTemplate类的“常用方法”execute( ):直接执行“sql语句”,没有返回值update( ) :“增删改”,返回 “影响的行数”query( ) : “…...
面试八股文(2)
文章目录 1.ArrayList和LinkedList区别2.HashMap和HashTable区别3.线程的创建方式4.Java中异常处理5.Java序列化中某些字段不想进行序列化?6.Java序列化7.静态方法和实例方法8.List、Set、Map三者区别9.ArrayList和Vector区别10.HashMap和HashSet区别 1.ArrayList和…...
记elasticsearch CPU负载100%问题
记elasticsearch CPU负载100%问题 环境:问题表现:初步排查:日志查询hot_thread 深入查询当前elasticsearch正在运行的Task查看Task详情解决问题对导致问题的原因的几个猜测问题复现:导致问题的原因。json导入规则问题json导入规则…...
回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)
回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制&…...
PyTorch、NCNN、CV::Mat三者张量的shape
目录 一、PyTorch二、NCNN三、CV::Mat 一、PyTorch 在 PyTorch 中,张量(Tensor)的形状通常按照 (N, C, H, W) 的顺序排列,其中: N 是批量大小(batch size) C 是通道数(channel numb…...
社交平台内容创作未来会有哪些方向?
内容为王的时代下,企业如果想要通过社交平台占据用户心智,可以找到适合自己的内容营销策略,好的内容能够与消费者建立信任关系,今天 媒介盒子就来和大家聊聊:社交平台内容创作的方向。 一、 内容逐渐细分 相比于原来…...
MySQL温故篇(一)SQL语句基础
一、SQL语句基础 1、SQL语言分类 DDL:数据定义语言 DCL:数据控制语言 DML:数据操作语言 DQL:数据的查询语言 2、数据类型 3、字符类型 char(11) : 定长 的字符串类型,在存储字符串时,最大字符长度11个&a…...
C 检查小端存储还是大端
#include <stdio.h>int main() {unsigned int i 1;char *c (char*)&i;if (*c) printf("小端字节序\n");elseprintf("大端字节序\n");return 0; }该程序就是利用了强转舍弃 我们首先定义了一个无符号整数i并将其初始化为1。然后,…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
