Leetcode周赛368补题(3 / 3)

news/2024/5/20 7:22:37/文章来源:https://blog.csdn.net/weixin_61639349/article/details/133972056

目录

1、元素和最小的山型三元组 | - 三层for暴力循环

2、元素和最小的山型三元组 || - 维护前后最小值 遍历

3、合法分组的最少组数 - 思维 + 哈希表


1、元素和最小的山型三元组 | - 三层for暴力循环

100106. 元素和最小的山形三元组 I

class Solution {public int minimumSum(int[] nums) {int minx=Integer.MAX_VALUE;for(int i=0;i<nums.length-2;i++)for(int j=i+1;j<nums.length-1;j++)for(int k=j+1;k<nums.length;k++)if(nums[j]>nums[i]&&nums[k]<nums[j]){   System.out.println(nums[i]+" "+nums[j]+" "+nums[k]);int t=nums[i]+nums[j]+nums[k];if(t<minx) minx=t;}if(minx==Integer.MAX_VALUE) return -1;return minx;}
}

2、元素和最小的山型三元组 || - 维护前后最小值 遍历

100114. 元素和最小的山形三元组 II

思路:

自己做出来的!没有看题解!

  • 维护每一个nums[i]的前后最小值,然后遍历整个区间,如果该数的前后(pre和beh)满足山峰形式,则更新最小值
  • 具体做法是开辟两个数组:pre[i]存nums[i]前的最小值,beh[i]存nums[i]后的最小值
class Solution {public int minimumSum(int[] nums) {int n=nums.length;int[] pre=new int[100001],beh=new int[100001];pre[0]=Integer.MAX_VALUE;beh[n-1]=Integer.MAX_VALUE;for(int i=1;i<n-1;i++)if(pre[i-1]>nums[i-1])pre[i]=nums[i-1];else pre[i]=pre[i-1];for(int i=n-2;i>0;i--)if(beh[i+1]>nums[i+1])beh[i]=nums[i+1];else beh[i]=beh[i+1];int minx=Integer.MAX_VALUE;for(int i=1;i<n-1;i++)if(pre[i]<nums[i]&&nums[i]>beh[i]){int t=pre[i]+nums[i]+beh[i];if(t<minx) minx=t;}if(minx==Integer.MAX_VALUE) return -1;return minx;}
}

 

3、合法分组的最少组数 - 思维 + 哈希表

100097. 合法分组的最少组数

思路:

用哈希表统计每个数字出现的个数mp[x]

设组内个数为k

要想分组最少,则k需要越大,而k最大不能超过最小出现个数

因此我们可以遍历整个哈希表找出最小出现次数k

然后倒着枚举k,查找最合适的组内个数

假设mp[x]=34,假如k=10,则34=10+10+10+4,如果k=11,则34=11+11+11+1就无法合理分配,也就是说,如果分组数<余数【mp[x]÷k < mp[x]%k】,因为分组内个数之差不能超过1,所以这种情况下即使每组个数+1,也分不完余数

分组越小,组内个数越大,因此如果能合理分组,尽量让组内个数大,也就是k+1

所以遍历mp[x]累加结果,res=\left \lceil \frac{mp[x]}{k+1} \right \rceil,一旦分组成功直接返回答案

class Solution {public int minGroupsForValidAssignment(int[] nums) {Map<Integer,Integer> mp=new HashMap<>();int k=Integer.MAX_VALUE;for(int x:nums) mp.put(x,mp.getOrDefault(x,0)+1);for(int x:mp.values())k=Math.min(k,x);int res=0;for(;;k--){res=0;for(int x:mp.values()){if(x/k < x%k)  //如果余数>组数 因为分组之差不能大于1 所以这种情况下即使每组+1也分不完余数 分组失败{res=0;break;}res+=(x+k)/(k+1); //res+=x/(k+1)向上取整}if(res>0) return res;}}
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Doris (四十六): Doris数据更新与删除 - 批量删除

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

#电子电器架构 —— 车载网关初入门

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数7000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他…

51单片机实现换能器超声波测水深

一&#xff0c;超声波换能器定义&#xff1a; 定义1&#xff1a;可把电能、机械能或声能从一种形式转换为另一种形式的能的装置。 所属学科&#xff1a;测绘学下的测绘仪器。 定义2&#xff1a;能量转换的器件。在水声领域中常把声呐换能器、水声换能器、电声换能器统称换能器。…

博客后台模块续更(六)

十三、后台模块-用户列表 1. 查询用户 需要用户分页列表接口。 可以根据用户名模糊搜索。 可以进行手机号的搜索。 可以进行状态的查询。 1.1 接口分析 请求方式请求路径是否需求token头GETsystem/user/list是 请求参数query格式&#xff1a; pageNum: 页码pageSize…

【linux系统】如何在服务器上安装Anaconda

文章目录 1. 安装Anconda1.1. 下载Anaconda安装包1.2. 安装Anaconda1.2.1. 点击回车&#xff08;Enter&#xff09;1.2.2. 添加环境变量1.2.3. 激活环境变量 1.3. 检查是否安装成功 2. Anaconda安装pytorch2.1. 创建虚拟环境2.2. 激活(进入)虚拟环境2.3. 安装pytorch 1. 安装An…

C语言--程序环境和预处理(宏)

目录 前言 本章重点&#xff1a; 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境​编辑 2.2 编译本身也分为几个阶段 2.3 运行环境 3. 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define 定义宏 2.2.3 #define 替换规则 …

Mock测试详细教程入门这一篇就够了!

1、什么是mock测试 1.png Mock测试就是在测试活动中&#xff0c;对于某些不容易构造或者不容易获取的比较复杂的数据/场景&#xff0c;用一个虚拟的对象(Mock对象)来创建用于测试的测试方法。 2、为什么要进行Mock测试 Mock是为了解决不同的单元之间由于耦合而难于开发、测试…

高校教务系统登录页面JS分析——西安交通大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

Android手机连接电脑弹出资源管理器

如图所示&#xff0c;很讨厌 关闭方法&#xff1a;

Node编写用户登录接口

目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token&#xff0c;如何编写注册接…

ROI的投入产出比是什么?

ROI的投入产出比是什么&#xff1f; 投入产出比&#xff08;Return on Investment, ROI&#xff09;是一种评估投资效益的财务指标&#xff0c;用于衡量投资带来的回报与投入成本之间的关系。它的计算公式如下&#xff1a; 投资收益&#xff1a;指的是投资带来的净收入&#x…

Python基础入门例程2-NP2 多行输出

描述 将字符串 Hello World! 存储到变量str1中&#xff0c;再将字符串 Hello Nowcoder! 存储到变量str2中&#xff0c;再使用print语句将其打印出来&#xff08;一行一个变量&#xff09;。 输入描述&#xff1a; 无 输出描述&#xff1a; 第一行输出字符串Hello World!&a…

DDOS直接攻击系统资源

DDOS ——直接攻击系统资源 思路&#xff1a; 攻击机利用三次握手机制&#xff0c;产生大量半连接&#xff0c;挤占受害者系统资源&#xff0c;使其无法正常提供服务。 1、先体验下受害者的正常网速。在受害者主机上执行以下命令 (1)开启Apache。 systemctl start apache2 (2…

SysTick—系统定时器

SysTick 简介 SysTick—系统定时器是属于CM3内核中的一个外设&#xff0c;内嵌在NVIC中。系统定时器是一个24bit 的向下递减的计数器&#xff0c;计数器每计数一次的时间为1/SYSCLK&#xff0c;一般我们设置系统时钟SYSCLK 等于72M。当重装载数值寄存器的值递减到0的时候&#…

LeetCode刷题---简单组(一)

文章目录 &#x1f352;题目一 507. 完美数&#x1f352;解法一 &#x1f352;题目二 2678. 老人的数目&#x1f352;解法一 &#x1f352;题目三 520. 检测大写字母&#x1f352;解法一&#x1f352;解法二 &#x1f352;题目一 507. 完美数 对于一个 正整数&#xff0c;如果它…

一文教你学会使用Cron表达式定时备份MySQL数据库

各位小伙伴大家好&#xff0c;今天我就来讲述一下作为一个运维&#xff0c;如何解放自己的双手去让服务器定时备份数据库数据&#xff0c;防止程序操作数据库出现数据丢失。 mysql_dump_script.sh脚本文件 #!/bin/bash#保存备份个数&#xff0c;备份7天数据 number7 #备份保存…

常见面试题-Netty专栏(一)

typora-copy-images-to: imgs Netty 是什么呢&#xff1f;Netty 用于做什么呢&#xff1f; 答&#xff1a; Netty 是一个 NIO 客户服务端框架&#xff0c;可以快速开发网络应用程序&#xff0c;如协议服务端和客户端&#xff0c;极大简化了网络编程&#xff0c;如 TCP 和 UDP …

【智能家居】

面向Apple developer学习&#xff1a;AirPlay | Apple Developer Documentation Airplay AirPlay允许人们将媒体内容从iOS、ipad、macOS和tvOS设备无线传输到支持AirPlay的Apple TV、HomePod以及电视和扬声器上。 网页链接的最佳实践 首选系统提供的媒体播放器。内置的媒体播…

IPD集成产品开发TR技术评审详解

IPD&#xff08;Integrated Product Development&#xff09;集成产品开发是一种跨部门协同的、利用先进技术和管理方法来快速推出新产品并满足客户需求的开发模式。华为利用IPD也非常出名。在IPD集成产品开发的过程中&#xff0c;TR&#xff08;Technical Review&#xff09;技…

Spring Boot中RedisTemplate的使用

当前Spring Boot的版本为2.7.6&#xff0c;在使用RedisTemplate之前我们需要在pom.xml中引入下述依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><vers…