Leetcode周赛368补题(3 / 3)

news2025/1/11 21:47:42

目录

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.coloradmin.cn/o/1128163.html

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

相关文章

Linux流量监控

yum install -y iptrafiptraf-ng -d ens33

centos7磁盘动态扩容

1.查看磁盘空间 df -h 2.fdisk -l 查看当前的磁盘分区信息(主要是分区表信息) linux新增磁盘后&#xff0c;用fdisk等命令查询不到 #ls /sys/class/scsi_host/ &#xff08;会看到有host0、host1…hostN&#xff0c;对每个host进行如下操作&#xff09; echo “- - -” …

IP证书针对公网IP签发

很多项目应用需要采用IP地址数据桥接访问&#xff0c;这种情况下需要确保数据安全性及信任不被劫持的情况下&#xff0c;需要使用给IP地址增加数字证书进行保护。针对这种情况下我们对公网IP地址申请SSL证书做了详细的介绍&#xff0c;让我们可以更快地了解如何用IP地址去申请S…

sknearl-7处理文本数据

本章代码大部分没跑&#xff0c;只供学习 第四节特征工程里提到&#xff0c;有连续特征和离散特征&#xff0c;对于文本数据&#xff0c;文本特征可以看作第三种特征 1 用字符串表示的数据类型 2 例子 电影评论情感分析 给定一个影评&#xff08;输入&#xff09;&#xff…

Spring Boot配置 application.yml,根据application.yml选择启动配置

在Spring Boot 中可以选择applicant.properties 作为配置文件&#xff0c;也可以通过在application.yml中进行配置&#xff0c;让Spring Boot根据你的选择进行加载启动配置文件。 这种配置方式&#xff0c;我们通常在实际开发中经常使用&#xff0c;主要为了发布版本和以及开发…

ATFX汇市:美元指数跌破关键支撑,黄金触及2000关口后回落

ATFX汇市&#xff1a;昨日&#xff0c;在没有重磅数据公布的情况下&#xff0c;美元指数大跌0.52%&#xff0c;最低触及105.51&#xff0c;令市场人士感到意外。美元指数与美债价格呈反向波动关系&#xff1a;美联储加息&#xff0c;美债价格下跌&#xff08;收益率提高&#x…

清华训练营悟道篇之操作系统的调用接口

文章目录 API与ABI系统调用接口的功能 API与ABI API (Application Programming Interface)定义了源码级&#xff08;如 C 语言&#xff09;函数的参数&#xff0c;参数的类型&#xff0c;函数的返回值等。API 是用来约束编译器 (Compiler) 的&#xff0c;给编译器的一些指令&a…

女孩子就是要打扮漂亮,让童年不留遗憾

好的衣服当然要分享给好看的人啦&#xff01; 百搭圆领卫衣&#xff0c;经典版型不挑人穿 复合奥利绒面料&#xff0c;罗纹收口设计 时尚百搭怎么穿都好看 单穿内搭都可以 卡通鹅真的好可爱 宝贝穿上去真的元气满满哦

Verilog功能模块——读写位宽不同的同步FIFO

FIFO系列文章目录&#xff1a; Verilog功能模块——异步FIFO-CSDN博客 Verilog功能模块——同步FIFO-CSDN博客 Verilog功能模块——读写位宽不同的异步FIFO-CSDN博客 Verilog功能模块——读写位宽不同的同步FIFO-CSDN博客 Verilog功能模块——标准FIFO转FWFT FIFO-CSDN博客…

Linux ——目录结构

这些目录在 Linux 系统中的解释如下&#xff1a; 目录用途/bin存放常用命令的二进制文件。/boot包含启动 Linux 时必要的核心文件。/dev代表设备&#xff08;Device&#xff09;&#xff0c;其中包含系统的外部设备。/etc主要存放系统的配置文件。/home用户的主目录&#xff0…

深入了解JavaScript中的数据类型

目录 基本数据类型 引用数据类型 类型检查 转换和比较 结论 JavaScript是一门动态类型语言&#xff0c;它支持多种数据类型。在本文中&#xff0c;我们将深入探讨JavaScript中的各种数据类型以及它们的特点。 基本数据类型 JavaScript中有六种基本数据类型&#xff0c;它…

信息化,数字化,智能化是三种不同的概念吗?

什么是信息化&#xff1f;什么是数字化&#xff1f;什么是智能化&#xff1f;这三者之间有什么关系&#xff0c;又有什么区别&#xff1f;他们又分别是如何助力企业转型的&#xff1f; 一、什么是数字化 先上概念—— 数字化&#xff1a;表示利用数字形式的信息提高工作效率…

【LeetCode刷题(数据结构与算法)】:三数之和(数组+指针+排序)

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 请你返回所有和为 0 且不重复的三元组 注意&#xff1a;答案中不可以包含重复的三元组 示例 1&#xff…

51单片机的hello world之点灯

文章目录 前言一、基础定义和点灯二、延时函数三、独立按键三、中断的配置和使用外部中断法捕获中断 总结 前言 hello 大家好这里是夏目学长的51单片机课堂&#xff0c;本篇博客是夏目学长观看B站up主学电超人的视频所写的一篇51单片机入门博客之51单片机点灯以及 独立按键 中…

Fiddler 的使用(详细教程)

文章目录 前言一、简介二、下载安装三、界面简介1. 菜单栏2. 工具栏3. 会话面板4. 辅助标签工具5. 命令行6. 状态栏 四、常用功能1. 抓取指定 IP 地址的包2. 抓取 HTTPS 协议的包3. 手机 APP 抓包4. 发送序列化请求5. 发送上传文件请求 五、常见问题 前言 Fiddler 是最常用的 …

成都优优聚美团代运营:助力商家腾飞的隐形翅膀

在当前数字化时代&#xff0c;电子商务的飞速发展使得线上运营成为越来越多商家的必然选择。在这个过程中&#xff0c;美团代运营作为一种专业的外包服务模式&#xff0c;正逐渐发挥出其巨大的作用。 一、美团代运营的定义与作用 美团代运营&#xff0c;顾名思义&#xff0c;是…

TikTok网红营销:挖掘潜在客户的高效策略

在当今数字时代&#xff0c;社交媒体已经成为了企业吸引潜在客户的重要渠道之一。TikTok作为全球范围内最热门的短视频分享平台之一&#xff0c;为企业提供了一个独特的机会&#xff0c;可以通过网红营销来挖掘潜在客户。本文Nox聚星将和大家探讨如何在TikTok上运用网红营销策略…

大数据时代,网络安全人员的钱途在哪里?

未来10年20年以后&#xff0c;这世界最珍贵的资源、最稀缺的资源&#xff0c;不会是石油&#xff0c;一定是数据。企业要有最快获取数据的能力、处理数据的能力、分享数据的能力、产生数据的能力。在刚过去不久的2020中国国际智能产业博览会上&#xff0c;马云在8分钟演讲里30次…

提取机器人专注视频号视频下载!视频号视频下载使用教程

知道吗&#xff1f;原来我们可以轻松地将视频下载到手机上&#xff0c;无需再繁琐操作了&#xff01;那么&#xff0c;让我教你一招吧&#xff01; 首先&#xff0c;你需要一个神器——名字叫做「提取机器人」。这个小众冷门的应用真的是保姆级存在&#xff0c;让你的下载经验变…

CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集安装DockerGitLabGitLab-Runner阿里云容器仓库 GitLab-CIJava微服务的GitLab-CI应用 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服…