当前位置: 首页 > news >正文

368周赛leetcode

1 2题元素和最小的山形三元组

经典动规

题目内容

给你一个下标从 0 开始的整数数组 nums 。

如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个 山形三元组 :

i < j < k
nums[i] < nums[j] 且 nums[k] < nums[j]
请你找出 nums 中 元素和最小 的山形三元组,并返回其 元素和 。如果不存在满足条件的三元组,返回 -1 。

样例

输入:nums = [5,4,8,7,10,2]
输出:13
解释:三元组 (1, 3, 5) 是一个元素和等于 13 的山形三元组,因为:

  • 1 < 3 < 5
  • nums[1] < nums[3] 且 nums[5] < nums[3]
    这个三元组的元素和等于 nums[1] + nums[3] + nums[5] = 13 。可以证明不存在元素和小于 13 的山形三元组。

数据范围

3 <= nums.length <= 105
1 <= nums[i] <= 108

思路

左右算最小值点,记录,然后动态规划
复杂度O(n)。

class Solution {public int minimumSum(int[] nums) {int n = nums.length;int[] left_min = new int[n];int[] right_min = new int[n];int min = nums[0];for(int i=1;i<n-1;i++){min=Math.min(min,nums[i-1]);left_min[i] = min;}min = nums[n-1];for(int i=n-2;i>0;i--){min=Math.min(min,nums[i+1]);right_min[i] = min;}int result = Integer.MAX_VALUE;for(int i=1;i<n-1;i++)if(nums[i]>left_min[i]&&nums[i]>right_min[i])result = Math.min(result,nums[i]+left_min[i]+right_min[i]);return result==Integer.MAX_VALUE?-1:result;}
}

3 题 元素和最小的山形三元组

题目内容

给你一个长度为 n 下标从 0 开始的整数数组 nums 。

我们想将下标进行分组,使得 [0, n - 1] 内所有下标 i 都 恰好 被分到其中一组。

如果以下条件成立,我们说这个分组方案是合法的:

对于每个组 g ,同一组内所有下标在 nums 中对应的数值都相等。
对于任意两个组 g1 和 g2 ,两个组中 下标数量 的 差值不超过 1 。
请你返回一个整数,表示得到一个合法分组方案的 最少 组数。

样例

示例 1:

输入:nums = [3,2,3,2,3]
输出:2
解释:一个得到 2 个分组的方案如下,中括号内的数字都是下标:
组 1 -> [0,2,4]
组 2 -> [1,3]
所有下标都只属于一个组。
组 1 中,nums[0] == nums[2] == nums[4] ,所有下标对应的数值都相等。
组 2 中,nums[1] == nums[3] ,所有下标对应的数值都相等。
组 1 中下标数目为 3 ,组 2 中下标数目为 2 。
两者之差不超过 1 。
无法得到一个小于 2 组的答案,因为如果只有 1 组,组内所有下标对应的数值都要相等。
所以答案为 2 。
示例 2:

输入:nums = [10,10,10,3,1,1]
输出:4
解释:一个得到 2 个分组的方案如下,中括号内的数字都是下标:
组 1 -> [0]
组 2 -> [1,2]
组 3 -> [3]
组 4 -> [4,5]
分组方案满足题目要求的两个条件。
无法得到一个小于 4 组的答案。
所以答案为 4 。

范围

1 <= nums.length <= 105
1 <= nums[i] <= 109

思路

先记录nums的值进行一个每个数出现次数进行排序,生成数组members
然后根据出现次数来获取可以组成的最小组数
这里 从出现次数的最小值遍历到1,遍历选取当前值和当前值+1(now和now+1)。然后对members数组进行判断、遍历、加和答案。
复杂度: O ( n ) O(n) O(n)

ac代码

class Solution {public int isgroup(int member,int now){int result = Integer.MAX_VALUE;for(int i=0;i<2;i++){if(now+i<=0)continue;int remain  = now+i;int group = member/remain;int leave  = member%remain;if(leave==0)result = Math.min(group,result);else{int remeber = member - group*remain;if(i==0&&remeber<=group)result = Math.min(group,result);if(i==1&&((remain-remeber)<=group))result = Math.min(group+1,result);}}return result;}public int minGroupsForValidAssignment(int[] nums) {HashMap<Integer,Integer> map = new HashMap<>();int now=0;for(int x:nums){now = map.getOrDefault(x,0);map.put(x,now+1);}int[] members = new int[map.size()];now = 0;for(Map.Entry<Integer,Integer> x:map.entrySet())members[now++] = x.getValue();Arrays.sort(members);int max_num = members[0];for(int i=max_num;i>0;i--){int result = 0;for(now=0;now<members.length;now++){int group_num = isgroup(members[now],i);System.out.println(group_num+" "+i);if(group_num == Integer.MAX_VALUE)break;result+=group_num;}if(now==members.length)return result;}return -1;}
}

4 6920. 得到 K 个半回文串的最少修改次数

未完成

相关文章:

368周赛leetcode

1 2题元素和最小的山形三元组 经典动规 题目内容 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件&#xff0c;则认为它是一个 山形三元组 &#xff1a; i < j < k nums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 num…...

Vue 的 nextTick:深入理解异步更新机制

目录 一、前言 二、Vue.js 异步更新机制简述 三、Vue.nextTick原理 四、nextTick 的应用场景 1. 获取更新后的 DOM 元素 2. 在 DOM 更新后执行自定义的回调函数 3. 解决事件监听器中的更新问题 五、Vue.nextTick与其他异步更新方法的比较 六、总结 一、前言 Vue.js&a…...

SQL关于日期的计算合集

前言 在SQL Server中&#xff0c;时间和日期是常见的数据类型&#xff0c;也是数据处理中重要的一部分。SQL Server提供了许多内置函数&#xff0c;用于处理时间和日期数据类型。这些函数可以帮助我们执行各种常见的任务&#xff0c;例如从日期中提取特定的部分&#xff0c;计…...

shell_44.Linux使用 getopt 命令

使用 getopt 命令 getopt 命令在处理命令行选项和参数时非常方便。它能够识别命令行参数&#xff0c;简化解析过程 1. 命令格式 getopt 命令可以接受一系列任意形式的命令行选项和参数&#xff0c;并自动将其转换成适当的格式。 getopt 的命令格式如下&#xff1a; getopt opt…...

Linux备份Docker的mysql数据并传输到其他服务器保证数据级容灾

目录 简介什么是容灾 &#xff1f;容灾的分类容灾和备份有什么连系 &#xff1f; 数据级容灾备份步骤1、scp命令&#xff1a;用于Linux之间复制文件和目录2、编写备份数据库脚本3、crontab定时任务执行脚本4、测试 应用级容灾业务级容灾 简介 为了防止客户系统的数据丢失&…...

【vue+nestjs】qq第三方授权登录【超详细】

项目场景&#xff1a; 前端使用vue3ts 后端使用nestjs 1.申请appId,appKey 1.进入qq互联官网。创建应用 特别注意 1.在填写网站回调域时,需要你线上真实能访问的。不然审核不通过。我的回调地址是前端路由地址 2.如果你想本地调试&#xff0c;回调到你的线上地址。你可以在本…...

经典卷积神经网络 - VGG

使用块的网络 - VGG。 使用多个 3 3 3\times 3 33的要比使用少个 5 5 5\times 5 55的效果要好。 VGG全称是Visual Geometry Group&#xff0c;因为是由Oxford的Visual Geometry Group提出的。AlexNet问世之后&#xff0c;很多学者通过改进AlexNet的网络结构来提高自己的准确…...

系统集成测试(SIT)/系统测试(ST)/用户验收测试(UAT)

文章目录 单元测试集成测试系统测试用户验收测试黑盒测试白盒测试压力测试性能测试容量测试安全测试SIT和UAT的区别 单元测试 英文 unit testing&#xff0c;缩写 UT。测试粒度最小&#xff0c;一般由开发小组采用白盒方式来测试&#xff0c;主要测试单元是否符合“设计”。 …...

Android Gradle8.0以上多渠道写法以及针对不同渠道导入包的方式,填坑!

目录 多渠道的写法 针对多渠道引用不同的包 There was a failure while populating the build operation queue: Could not stat file E:\xxxx\xxxx\xxxx\app\src\UAT\libsUAT\xxx-provider(?)-xx.aar 最近升级了Gradle8.3之后&#xff0c;从Groovy 迁移到 Kotlin&#xff…...

hdlbits系列verilog解答(向量门操作)-14

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 构建一个具有两个 3 位输入的电路&#xff0c;用于计算两个向量的按位 OR、两个向量的逻辑 OR 以及两个向量的逆 &#xff08;NOT&#xff09;。将b反相输出到out_not上半部分&#xff0c;将a 的反相输出到out…...

工厂模式(初学)

工厂模式 1、简单工厂模式 是一种创建型设计模式&#xff0c;旨在通过一个工厂类&#xff08;简单工厂&#xff09;来封装对象的实例化过程 运算类 public class Operation { //这个是父类private double num1; //运算器中的两个值private double num2;public double getNu…...

python试题实例

背景&#xff1a; 在外地出差&#xff0c;突然接到单位电话&#xff0c;让自己出一些python考题供新人教育训练使用&#xff0c;以下是10道Python编程试题及其答案&#xff1a; 1.试题&#xff1a;请写一个Python程序&#xff0c;计算并输出1到100之间所有偶数的和。 答案&am…...

Java Heap Space问题解析与解决方案(InsCode AI 创作助手)

Heap Space问题是Java开发中常见的内存溢出问题之一&#xff0c;我们需要理解其原因和表现形式&#xff0c;然后通过优化代码、增加JVM内存和使用垃圾回收机制等方法来解决。 一、常见报错 java.lang.OutOfMemoryError: Java heap space二、Heap Space问题的原因 对象创建过…...

基于遥感影像的分类技术(监督/非监督和面向对象的分类技术)

遥感图像分类技术 “图像分类是将土地覆盖类别分配给像素的过程。例如&#xff0c;类别包括水、城市、森林、农业和草原。”前言 – 人工智能教程 什么是遥感图像分类&#xff1f; 遥感图像分类技术的三种主要类型是&#xff1a; 无监督图像分类监督图像分类基于对象的图像分析…...

插入兄弟元素 insertAfter() 方法

insertAfter() 方法在被选元素后插入 HTML 元素。 提示&#xff1a;如需在被选元素前插入 HTML 元素&#xff0c;请使用 insertBefore() 方法。 语法 $(content).insertAfter(selector)例子&#xff1a; $("<span>Hello world!</span>").insertAfter(…...

【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现

CentralCache 1.框架介绍2.核心功能3.核心函数实现介绍3.1SpanSpanList介绍3.2CentralCache.h3.3CentralCache.cpp3.4TreadCache申请内存函数介绍3.5慢反馈算法 1.框架介绍 回顾一下ThreadCache的设计&#xff1a; 如图所示&#xff0c;ThreadCache设计是一个哈希桶结构&…...

Git基础教程

一、Git简介 1、什么是Git&#xff1f; Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同&#…...

stm32外部时钟为12MHZ,修改代码适配

代码默认是8MHZ的&#xff0c;修改2个地方&#xff1a; 第一个地方是这个文件的这里&#xff1a; 第二个地方是找到这个函数&#xff1a; 修改第二个地方的这里&#xff1a;...

【数据结构】八大排序

目录 1. 排序的概念及其作用 1.1 排序的概念 1.2 排序运用 1.3 常见的排序算法 2. 常见排序算法的实现 2.1 插入排序 2.1.1 基本思想 2.1.2 直接插入排序 2.1.3 希尔排序&#xff08;缩小增量排序&#xff09; 2.2 选择排序 2.2.1 基本思想 2.2.2 直接选择排序 2.2…...

MYSQL(事务+锁+MVCC+SQL执行流程)理解

一)事务的特性: 一致性:主要是在数据层面来说&#xff0c;不能说执行扣减库存的操作的时候用户订单数据却没有生成 原子性:主要是在操作层面来说&#xff0c;要么操作完成&#xff0c;要么操作全部回滚&#xff1b; 隔离性:是自己的事务操作自己的数据&#xff0c;不会受到到其…...

低查重AI教材写作攻略:工具选择、流程步骤与案例解析

谁没有过为教材框架而苦恼的经历呢&#xff1f;面对一片空白的文档&#xff0c;有时甚至会傻傻地发愣半个小时。该先讲解概念&#xff0c;还是当即提供案例呢&#xff1f;章节划分应该根据逻辑还是按课时进行&#xff1f;即使经常调整大纲&#xff0c;最终得到的结果要么不符合…...

解锁课程论文新姿势:书匠策AI,你的学术魔法棒

在学术的征途上&#xff0c;课程论文如同那初出茅庐的勇士&#xff0c;既怀揣着对知识的渴望&#xff0c;又面临着诸多未知的挑战。选题迷茫、结构混乱、内容匮乏、修改繁琐……这些问题像一道道难关&#xff0c;横亘在许多学子面前。但别怕&#xff0c;今天我要给大家揭秘一个…...

Bebas Neue:为什么这个开源字体能成为设计师的秘密武器?

Bebas Neue&#xff1a;为什么这个开源字体能成为设计师的秘密武器&#xff1f; 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue 你是不是经常在设计标题时感到纠结&#xff1f;想要一种既现代又有冲击力的字体&a…...

R—实战指南:利用picante包高效计算Faith系统发育多样性(PD)

1. 什么是Faith系统发育多样性(PD) Faith系统发育多样性&#xff08;Phylogenetic Diversity&#xff0c;简称PD&#xff09;是生态学研究中一个非常重要的概念。简单来说&#xff0c;它衡量的是一个群落中所有物种在进化树上的"总枝长"——你可以想象成把这些物种在…...

命名空间自动推导、嵌套别名、跨文件作用域优化,PHP 8.9这3项增强将淘汰PSR-4自动加载器?

第一章&#xff1a;PHP 8.9命名空间增强的演进背景与设计哲学PHP 命名空间自 5.3 版本引入以来&#xff0c;已成为组织大型代码库的核心机制。然而&#xff0c;随着现代 PHP 应用向模块化、跨包协作和类型安全深度演进&#xff0c;传统命名空间在语义表达力、跨作用域引用效率及…...

Go 内存逃逸与逃逸分析

Go 内存逃逸与逃逸分析&#xff1a;高效内存管理的关键 在Go语言中&#xff0c;内存管理是性能优化的核心之一&#xff0c;而内存逃逸与逃逸分析则是理解其底层机制的重要概念。简单来说&#xff0c;内存逃逸是指本应在栈上分配的变量&#xff0c;由于某些原因被分配到了堆上&…...

AI专著撰写秘籍大公开!实用工具推荐,让写作从此轻松起飞

对于许多研究者来说&#xff0c;撰写学术专著面对的最大挑战&#xff0c;往往源于“有限的精力”与“无限的需求”之间的矛盾。写一本专著通常需要耗费3到5年&#xff0c;甚至更长的时间&#xff0c;而研究者们还需兼顾教学、科研与学术交流等多项任务&#xff0c;能够用于写作…...

Z-Image-Turbo镜像快速入门:预置模型,一键部署文生图环境

Z-Image-Turbo镜像快速入门&#xff1a;预置模型&#xff0c;一键部署文生图环境 1. 为什么选择Z-Image-Turbo镜像 如果你正在寻找一个开箱即用的文生图解决方案&#xff0c;Z-Image-Turbo镜像绝对是你的理想选择。这个镜像最大的优势在于它已经预置了完整的32.88GB模型权重文…...

5个步骤彻底解锁Cursor Pro:完整免费使用方案与设备重置指南

5个步骤彻底解锁Cursor Pro&#xff1a;完整免费使用方案与设备重置指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached yo…...

深入解密 JVM:CMS 垃圾回收器的“并发标记”到底是不是多此一举?

深入解密 JVM&#xff1a;CMS 垃圾回收器的“并发标记”到底是不是多此一举&#xff1f; 在学习 JVM 垃圾回收机制时&#xff0c;很多开发者在看到 CMS (Concurrent Mark Sweep) 垃圾回收器的执行步骤图时&#xff0c;都会产生一个直击灵魂的疑问&#xff1a;“初始标记和重新标…...