Leetcode - 144双周赛
目录
一,3360. 移除石头游戏
二,3361. 两个字符串的切换距离
三,3362. 零数组变换 III
四,3363. 最多可收集的水果数目
一,3360. 移除石头游戏
本题直接模拟过程,可以额外使用一个布尔变量标记谁赢,也可以通过 a (a = 10)最终的奇偶性来判断谁赢。
代码如下:
class Solution {public boolean canAliceWin(int n) {int a = 10;while(n >= a){n -= a;a -= 1;}return a%2 == 1;}
}
二,3361. 两个字符串的切换距离
对于每一个下标 i,想要将 s[i] 转换成 t[i],题目给了两种做法:
- 每次向前移动 1 次,例如:从字符 'b' 转换成字符 'a' 需要的代价为 previousCost['b']
- 每次向后移动 1 次,例如:从字符 'b' 转换成字符 'c' 需要的代价为 nextCost['b']
所以可以使用前缀和进行预处理,这样在枚举 s,t 时可以在 O(1) 的时间算出使用操作一/操作二所需的代价,求其中最小代价,加入答案,最终获得的就是答案。
这里使用前缀和计算代价还是挺绕的,画个图理解一下:
class Solution {public long shiftDistance(String ss, String tt, int[] nextCost, int[] previousCost) {char[] s = ss.toCharArray();char[] t = tt.toCharArray();long[] next = new long[27];long[] pre = new long[27];for(int i=0; i<26; i++){next[i+1] = next[i] + nextCost[i];//向后pre[i+1] = pre[i] + previousCost[i];//向前}int n = s.length;long ans = 0;for(int i=0; i<n; i++){int l = s[i] - 'a' + 1, r = t[i] - 'a' + 1;long x = l <= r ? next[r-1] - next[l-1] : next[26] - next[l-1] + next[r-1];long y = l >= r ? pre[l] - pre[r] : pre[26] - pre[r] + pre[l];ans += Math.min(x, y);}return ans;}
}
三,3362. 零数组变换 III
对于下标 i 来说,如果 nums[i] > 0 且之前已经全为0,如何挑选queries数组中的元素[L,R],当 L 满足条件时(L <= i),贪心的想,一定是 R 越大越好,这样可以包含的范围更广,后续的操作就会更少。所以需要一个最大堆来维护满足条件(L <= i)的右端点R,然后不断选取 R 最大的区间进行操作,直到当前 num[i] 为 0.
在枚举 nums 数组挑选queries的区域时,需要满足 i 在 [L,R] 的区间,所以需要先将 queries 数组按照左端点 L 进行排序。
剩下的就是使用差分数组去维护区间的-1/+1操作了。
代码如下:
class Solution {public int maxRemoval(int[] nums, int[][] queries) {PriorityQueue<Integer> que = new PriorityQueue<>((x,y)->y-x);Arrays.sort(queries,(x,y)->x[0]-y[0]);int n = nums.length;int[] diff = new int[n+1];int sum = 0, j = 0;for(int i=0; i<n; i++){sum += diff[i];while(j < queries.length && queries[j][0] <= i){que.offer(queries[j][1]);j++;}//满足 i 在 [L,R] 区间while(sum + nums[i] > 0 && !que.isEmpty() && que.peek() >= i){sum -= 1;diff[que.poll() + 1] += 1;}//sum + nums[i] > 0, 说明不管怎么操作都不能使得nums[i] = 0,直接返回-1if(sum + nums[i] > 0) return -1;}return que.size();}
}
四,3363. 最多可收集的水果数目
本题对每一个小朋友的移动进行计算:
- 对于从(0,0)小朋友来说,想要在 n - 1 次移动时恰好到达(n-1,n-1)只有一种走法,就是沿着对角线走。
- 对于从(0,n-1)的小朋友来说,这就是一个简单的走格子问题,就是从(0,n-1)走到 (n-1,n-1)所能收集的最大水果,且根据题意,它所能走的范围是对角线的上半部分,所以实际只要计算从(0,n-1)走到 (n-2,n-1)注:(n-1,n-1)在(0,0)的时候计算过了。
- 同理,对于从(n-1,0)的小朋友来说,这就是一个简单的走格子问题,就是从(0,n-1)走到 (n-1,n-2)所能收集的最大水果,且根据题意,它所能走的范围是对角线的下半部分。为了更方便,我们可以复用上面的代码,只需要将数组按照对角线翻转一下就行。
代码如下:
class Solution {public int maxCollectedFruits(int[][] f) {int n = f.length;int ans = 0;for(int i=0; i<n; i++){ans += f[i][i];}memo = new int[n][n];for(int[] r : memo) Arrays.fill(r, -1);ans += dfs(0, n-1, f);for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) {f[j][i] = f[i][j];}}for(int[] r : memo) Arrays.fill(r, -1);return dfs(0, n-1, f) + ans; }int[][] memo;int[] dirct = new int[]{-1, 0, 1};int dfs(int x, int y, int[][] f){int n = f.length;if(x == n-2) return f[x][y];if(memo[x][y] != -1) return memo[x][y];int res = 0;for(int d : dirct){int j = y + d;if(j >= n || j <= x+1) continue;//保证在对角线上方res = Math.max(res, dfs(x+1, j, f) + f[x][y]);}return memo[x][y] = res;}
}
相关文章:
Leetcode - 144双周赛
目录 一,3360. 移除石头游戏 二,3361. 两个字符串的切换距离 三,3362. 零数组变换 III 四,3363. 最多可收集的水果数目 一,3360. 移除石头游戏 本题直接模拟过程,可以额外使用一个布尔变量标记谁赢&…...
微信小程序全局配置:TabBar与页面配置详解
微信小程序全局配置:TabBar与页面配置详解 引言 随着移动互联网的迅猛发展,微信小程序作为一种新兴的应用形式,因其便捷性和丰富的功能而受到广泛欢迎。在小程序的开发过程中,全局配置是非常重要的一环,尤其是tabBar和页面的配置。本文将深入探讨微信小程序的全局配置,…...
Linux创建免密登陆(错误:Permission denied (publickey,gssapi-keyex,gssapi-with-mic))
报错截图 解决方法 1. mkdir -p ~/.ssh 2. chmod 700 ~/.ssh 3. ssh-keygen,一直回车 4. chmod 600 /root/.ssh/id_rsa 5. 将公钥内容追加到服务器上,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 6. chmod 600 ~/.ssh/authorized_keys…...
机器学习深掘临床研究中小分子代谢标志物的探索与应用
摘要 随着生命科学的发展,小分子生物标志物在临床研究中的作用日益凸显。机器学习技术为挖掘小分子生物标志物提供了强大工具。本文介绍了小分子生物标志物的定义、分类及在临床医学中的应用,阐述了常用机器学习算法在生物标志物挖掘中的优势࿰…...
计算机网络 第4章 网络层
计算机网络 (第八版)谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2:IP数据报分片与重组题目:计算IP数据报的首部校验和(不正确未改) …...
Android按键点击事件三种实现方法
1. 在xml文件中为 Button 添加android:onclick属性 由于没有onclick这个函数,onclick下面会提示红色波浪线错误,然后单击一下"onclick"按住键盘上AltEnter键,选择在activity中生成函数 public void onclick(View view) {Toast.makeText(this,&…...
微信小程序中会议列表页面的前后端实现
题外话:想通过集成腾讯IM来解决即时聊天的问题,如果含语音视频,腾讯组件一年5万起步,贵了!后面我们改为自己实现这个功能,这里只是个总结而已。 图文会诊需求 首先是个图文列表界面 同个界面可以查看具体…...
决策树——基于乳腺癌数据集与cpu数据集实现
决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …...
2024年11月24日Github流行趋势
项目名称:FreeCAD 项目维护者:wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍:FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数:20,875项目fork数:4,117 项目名称࿱…...
库的操作.
创建、删除数据库 创建语法: CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项,IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库,假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...
Go错误与日志处理—推荐实践
错误的分类 在 Go 语言中,错误是通过实现 error 接口的类型表示的,但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类,以及每类错误的解释和示例: 标准错误类型 标准库中定义了许多常见的错误类型&…...
文件上传upload-labs-docker通关
(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…...
C语言——数组基本知识(一)
目录 一.一维数组的初始化 二.数组的排序 ①冒泡排序: 代码: 没有第二个for循环运行结果如下: 正确的运行结果如下: ②选择排序 代码如下: 运行结果如图: 往期回顾: 一.一维数组的初始…...
vue2日历组件
【效果图】 <template><div style"width: 100%"><!-- <div> --><!-- <div>{{ startDate.getMonth() 1 - startDate.getDate() }}</div><div>{{ endDate.getMonth() 1 - endDate.getDate() }}</div> --&g…...
Unity C# 影响性能的坑点
c用的时间长了怕unity的坑忘了,记录一下。 GetComponent最好使用GetComponent<T>()的形式, 继承自Monobehaviour的函数要避免空的Awake()、Start()、Update()、FixedUpdate().这些空回调会造成性能浪费 GetComponent方法最好避免在Update当中使用…...
Redis(概念、IO模型、多路选择算法、安装和启停)
一、概念 关系型数据库是典型的行存储数据库,存在的问题是,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。 Redis在生产中使用的最多的是用作数据缓存。 服务器先在缓存中查询数据,查到则返回,…...
多线程
线程是什么? 1、线程是进程的执行分支,一个进程内部的控制程序 2、一个进程至少有一个执行线程 3、从CPU角度来看,线程就是一个更轻量化的线程 4、线程在进程内部运行,所以本质就是在进程地址空间上运行 注意: 一…...
Spring Boot林业产品推荐系统:用户指南
摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此林业产品销售信…...
计算机网络 实验八 应用层相关协议分析
一、实验目的 熟悉CMailServer邮件服务软件和Outlook Express客户端软件的基本配置与使用;分析SMTP及POP3协议报文格式和SMTP及POP3协议的工作过程。 二、实验原理 为了观察到邮件发送的全部过程,需要在本地计算机上配置邮件服务器和客户代理。在这里我…...
实战ansible-playbook:Ansible Vault加密敏感数据(三)
在实际生产环境中,使用 Ansible Vault 来加密敏感数据是一种常见的做法。以下是一个详细的步骤和实际生产环境的使用案例,展示如何使用 Ansible Vault 来加密和管理敏感数据。 1. 安装 Ansible 确保你已经安装了 Ansible。如果还没有安装,可以使用以下命令进行安装: # 在…...
oracle 12c查看执行过的sql及当前正在执行的sql
V$SQL 提供了已经执行过及正在执行的SQL语句的信息。 一 查看共享池中所有sql的统计信息 #统计共享池中某类sql执行次数,总体执行时长,平均执行时长等信息,并按总体执行时长降序排序 SELECT INST_ID,SQL_ID,SQL_TEXT,SQL_FULLTEXT,EXECUTI…...
【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…...
CSS:怎么把网站都变成灰色
当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...
Maven 常用命令
Maven 是一个强大的构建自动化工具,主要用于 Java 项目的管理和构建。 理解 Maven 命令对于高效管理与构建您的 Java 项目至关重要。 在本篇博客中,我们将探索每个 Java 开发者都应该掌握的一些最重要的 Maven 命令。 1. 设置 Maven 在深入探讨 Mave…...
【算法day1】数组:双指针算法
题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜…...
CTF之密码学(DES)
一、基本原理 DES加密使用相同的密钥进行加密和解密操作。它使用一个56位的密钥(另外8位为奇偶校验位,不直接参与加密过程,因此实际密钥长度为56位),对64位的数据块进行加密,得到64位的密文。加密过程主要…...
【css实现收货地址下边的平行四边形彩色线条】
废话不多说,直接上代码: <div class"address-block" ><!-- 其他内容... --><div class"checked-ar"></div> </div> .address-block{height:120px;position: relative;overflow: hidden;width: 500p…...
Linux—进程概念学习-03
目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…...
设计模式之破环单例模式和阻止破坏
目录 1. 序列化和反序列化2. 反射 这里单例模式就不多说了 23种设计模式之单例模式 1. 序列化和反序列化 这里用饿汉式来做例子 LazySingleton import java.io.Serializable;public class LazySingleton implements Serializable {private static LazySingleton lazySinglet…...
c++(斗罗大陆)
这次,作者编了斗罗大陆的武魂、魂力等级,目前只写到了11级 #include<iostream> #include<conio.h> #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<time.h> #include<strin…...
NodeJs使用Addon调用C++
本文介绍的是NodeJs使用node-addon-api调用C的方法 node-addon-api是一个C封装,基于N-API构建,目的是提供一个更高级和更易用的接口,但它仍然依赖N-API。 官方参考文档 开发环境 必须具备NodeJs环境 Window配置NodeJs环境(绅士版…...
YOLOv11(Ultralytics)视频选定区域目标统计计数及跟踪
在计算机视觉的众多应用场景中,对特定区域的目标进行检测、跟踪与计数是一个常见且重要的需求。无论是在智慧交通中统计通过特定路口的车辆数量,还是在零售分析中追踪进入特定区域的顾客行为,这一功能都发挥着不可或缺的作用。 随着深度学习…...
【Nginx系列】Nginx配置优先级
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
搭建私有docker仓库
1. 安装docker依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl …...
C语言练级->##__VA_ARGS__(可变参数)的用法
有什么用? 通常__VA_ARGS__用于宏定义,其中关于日志宏需要用的,printf 等支持可变参数的函数的宏封装。 首先我们先知道这个__VA_ARGS__的英文全称是“Variadic Arguments” 叫可变参数。说到可变参数学过C语言的朋友们应该都会想到printf&…...
在 wordpress 中简易目录插件添加滑动条
实现思路 给目录容器添加一个 固定高度,并设置 CSS 的 overflow 属性 为 auto 或 scroll,使其内容可滚动。确保目录的滚动行为独立于页面的整体滚动。优化用户体验,添加平滑滚动效果。 操作步骤 1. 检查目录的 HTML 结构 首先,…...
Linux和Ubuntu的关系
Linux和Ubuntu的关系: 1. Linux本身是内核,Ubuntu系统是基于Linux内核的操作系统。 2. Linux内核操作系统的构成: 内核、shell、文件系统、应用程序 -应用程序:文本编辑器等 -文件系统:文件存放在存储设备上的组织方…...
【大数据学习 | Spark-Core】详解Spark的Shuffle阶段
1. shuffle前言 对spark任务划分阶段,遇到宽依赖会断开,所以在stage 与 stage 之间会产生shuffle,大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。 负责shuffle…...
缓存方案分享
不知道大家平常更新缓存是怎么做的,但是大部分时候都是更新数据的同时更新缓存,今天和同事一起聊到一个缓存方案的问题,感觉很有趣、非常精妙,记录一下。 基于此本文将介绍几种常见的缓存更新策略,包括简单的缓存覆盖…...
从零开始配置Qt+VsCode环境
从零开始配置QtVsCode环境 文章目录 从零开始配置QtVsCode环境写在前面扩展安装及配置Qt Configure配置 VsCode创建Qt工程VsCodeQMakeMinGwVsCodeQMakeMsvcVsCodeCMakeMinGwVsCodeCMakeMsvcQtCreatorQMakeMinGw->VsCodeQtCreatorQMakeMsvc->VsCodeQtCreatorCMakeMinGw-&g…...
Linux中离线安装gcc
gcc在安装一些其他工具的经常用到,在此记录下如何安装gcc。 1.在线安装 yum -y install gcc 2.离线安装 2.1 获取安装包链接: https://pan.baidu.com/s/1oDvt64ByWs1w-evz5TXU7w?pwd9cfo mpfr-3.1.1-4.el7.x86_64.rpmlibmpc-1.0.1-3.el7.x86_64.rp…...
告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系
用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一,同时也是企业最宝贵的资产之一。通常情况下,用户行为数据分析包含两大数据源:用户行为分析日志和上游关系型数据库(如 MySQL)。基于这些数据,企…...
【python 迪杰斯特拉-最短路径算法】
- 算法实现 import heapq import networkx as nx import matplotlib.pyplot as pltdef dijkstra(graph, start, goal):distances {node: float("infinity") for node in graph}distances[start] 0parents {node: None for node in graph}priority_queue [(0, st…...
从〇开始深度学习(0)——背景知识与环境配置
从〇开始深度学习(0)——背景知识与环境配置 文章目录 从〇开始深度学习(0)——背景知识与环境配置写在前面1.背景知识1.1.Pytorch1.2.Anaconda1.3.Pycharm1.4.CPU与GPU1.5.整体关系 2.环境配置2.1.准备工作2.1.1.判断有无英伟达显卡2.1.2.清理电脑里的旧环境 2.1.安装Anaconda…...
【NLP 2、机器学习简介】
人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂,机器学习就是在其中找到这些的规律,挖掘规律建立一个公式,导致对陌生的数…...
多目标优化算法——多目标粒子群优化算法(MOPSO)
Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法) 一、摘要: 本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…...
Edify 3D: Scalable High-Quality 3D Asset Generation
Deep Imagination Research | NVIDIA 目录 一、Abstract 二、核心内容 1、多视图扩散模型 3、重建模型: 4、数据处理模块: 三、结果 1、文本到 3D 生成结果 2、图像到 3D 生成结果 3、四边形网格拓扑结构 一、Abstract NVIDIA 开发的用于高质量…...
探索校企合作新模式:职业院校大数据专业实验(实训)室建设指南
一、引言 作为一种强大的信息处理与分析工具,大数据技术在企业管理、科研探索、社会治理等多个领域均产生了广泛而深远的影响。在此背景下,大数据实验室的建设显得尤为重要,而校企合作则为这一建设提供了坚实的支撑。学校借助企业资源&#…...
YOLO的框架及版本迭代
YOLO(You Only Look Once)是一种非常流行的实时目标检测算法,其特点是将目标检测任务转换为一个回归问题,通过一次前向传播就可以同时完成目标的分类和定位。以下是YOLO框架的整体架构和工作原理: 一、YOLO的基本框架…...
第四十篇 DDP模型并行
摘要 分布式数据并行(DDP)技术是深度学习领域中的一项重要技术,它通过将数据和计算任务分布在多个计算节点上,实现了大规模模型的并行训练。 DDP技术的基本原理是将数据和模型参数分割成多个部分,每个部分由一个计算节点负责处理。在训练过程中,每个节点独立计算梯度,…...