每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
6. 475.供暖器(中等,学习check函数双指针思想)
475. 供暖器 - 力扣(LeetCode)
思想
1.冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋 houses
和供暖器 heaters
的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。
2.单调性检验:加热半径越小,越可能不能覆盖所有房屋,不满足条件,所以存在一个最小加热半径
3.难点在于check函数怎么写,我原来的思想是遍历heaters,然后把[heaters[i]-x,heaters[i]+x]
变为true,但这样会超出内存限制
4.学习:
(1)先将houses和heaters进行排序(最重要)
(2)让i指向当前判断房屋houses[i]
,然后j指向可能(先确保右边界成立) 覆盖到的heaters[j]
,x为加热半径
- 当且仅当
heaters[j]+x<houses[i]
时,第i个房屋必定不能被第j个加热器覆盖,然j自增 - 退出循环说明找到合适的j(右边界必然成立,找到能覆盖的最小加热器),再判断
heaters[j]-x<=houses[i]<=heaters[j]+x
是否满足
代码
c++:
class Solution {
public:bool check(vector<int>& houses, vector<int>& heaters, int mid) {int n = houses.size(), m = heaters.size();int j = 0;for (int i = 0; i < n; ++i) {while (j < m && houses[i] > heaters[j] + mid)++j; // 寻找能覆盖的最小加热器if (j < m && heaters[j] - mid <= houses[i] &&houses[i] <= heaters[j] + mid)continue; // 满足条件看下一个房子return false; // 不满足条件}return true;}int findRadius(vector<int>& houses, vector<int>& heaters) {int res = 0;sort(houses.begin(), houses.end());sort(heaters.begin(), heaters.end());int maxho = INT_MIN, minho = INT_MAX, maxhe = INT_MIN, minhe = INT_MAX;for (const int x : houses) {maxho = max(maxho, x);minho = min(minho, x);}for (const int x : heaters) {maxhe = max(maxhe, x);minhe = min(minhe, x);}int left = 0, right = max(abs(maxho - minhe), abs(maxhe - minho));while (left <= right) {int mid = left + ((right - left) >> 1);if (check(houses, heaters, mid)) {res = mid;right = mid - 1;} elseleft = mid + 1;}return res;}
};
7. 2594.修车的最少时间(中等)
2594. 修车的最少时间 - 力扣(LeetCode)
思想
1.给你一个整数数组 ranks
,表示一些机械工的 能力值 。ranksi
是第 i
位机械工的能力值。能力值为 r
的机械工可以在 r * n2
分钟内修好 n
辆车。同时给你一个整数 cars
,表示总共需要修理的汽车数目。请你返回**修理所有汽车(条件) ** 最少 需要多少时间(答案)。
2.类似于3296.移山所需的最少秒数
3.单调性检验,时间越少,越不可能修理所有汽车,所以存在一个最少时间
代码
c++:
class Solution {
public:bool check(vector<int>& ranks, int cars, long long mid) {long long sum = 0;for (const int x : ranks) {sum += (long long)sqrt(mid / x);if (sum >= cars)return true;}return false;}long long repairCars(vector<int>& ranks, int cars) {long long res = 0;int minval = INT_MAX;for (const int x : ranks)minval = min(minval, x);long long left = 1, right = 1LL * minval * cars * cars;while (left <= right) {long long mid = left + ((right - left) >> 1);if (check(ranks, cars, mid)) {res = mid;right = mid - 1;} elseleft = mid + 1;}return res;}
};
1.不用转换为long long的,可以写成1LL
8. 1482.制作m束花所需的最少天数
1482. 制作 m 束花所需的最少天数 - 力扣(LeetCode)
思想
1.给你一个整数数组 bloomDay
,以及两个整数 m
和 k
。现需要制作 m
束花。制作花束时,需要使用花园中 相邻的 k
朵花(小条件) 。花园中有 n
朵花,第 i
朵花会在 bloomDay[i]
时盛开,恰好可以用于 一束 花中。请你返回从花园中摘 m
束花(条件) 需要等待的最少的天数(答案)。如果不能摘到 m
束花则返回 -1 。
2.单调性检验:天数越少,越不能摘到m束花,所以存在一个最少天数
代码
c++:
class Solution {
public:bool check(vector<int>& bloomDay, int m, int k, int mid) {int n = bloomDay.size();int sum = 0, cnt = 0;for (int i = 0; i < n; ++i) {if (bloomDay[i] <= mid) {++cnt;if (cnt == k) {++sum;if (sum >= m)return true;cnt = 0;}} else {cnt = 0;}}return false;}int minDays(vector<int>& bloomDay, int m, int k) {int res = -1;int maxval = INT_MIN;for (const int x : bloomDay)maxval = max(maxval, x);int left = 1, right = maxval;while (left <= right) {int mid = left + ((right - left) >> 1);if (check(bloomDay, m, k, mid)) {res = mid;right = mid - 1;} elseleft = mid + 1;}return res;}
};
相关文章:
每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
6. 475.供暖器(中等,学习check函数双指针思想) 475. 供暖器 - 力扣(LeetCode) 思想 1.冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出…...
【线上故障排查】缓存热点Key导致Redis性能下降的排查与优化
一、高频面试题 什么是缓存热点Key?它会对Redis性能产生哪些影响? 缓存热点Key是指在某段时间内,被大量请求访问的缓存Key。由于Redis是单线程模型,大量针对热点Key的请求会导致该线程长时间处于忙碌状态,其他请求只能排队等待处理,从而使Redis整体响应延迟增加,吞吐量下…...

关于镜像如何装进虚拟机
本篇文章为感谢小仙猪老师特别编写 本篇文章仅以Ubuntu为例 目录 创建虚拟机 汉化 如果没有China选项 检查网络 创建虚拟机 第一步,创建虚拟机 因为,第一个选项是会把虚拟机的文件放在c盘因此,这里博主选择自定义,然后下一…...
CPU特权级别:硬件与软件协同构建系统安全的基石
在计算机系统的底层架构中,用户模式(User Mode)与内核模式(Kernel Mode)的划分是保障系统安全与稳定的核心机制。这一机制的实现既依赖于CPU硬件的特权级别设计,也离不开操作系统的精细化管理。本文将从硬件…...

智慧体育馆数字孪生,场馆管理智能化
图扑数字孪生智慧体育馆可视化管理平台。通过高精度三维建模,对体育馆建筑结构、设施设备等进行 1:1 虚拟映射,全方位还原场馆物理实体。系统集成多维度传感器数据,实现对人流量、客流密度、区域拥堵指数等信息的实时采集与分析,动…...

回归算法模型之线性回归
哈喽!我是 我不是小upper~ 今天来和大家聊聊「线性回归」—— 这是机器学习里最基础、最直观的算法之一,咱们用一个超简单的例子就能搞懂它! 先看一个生活场景 假设你是房产中介,遇到一个灵魂拷问: 客户有…...

【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA
深度推理(含链式法则详解)RNN, LSTM, GRU,VQA RNN 输入表示方式 在循环神经网络(Recurrent Neural Network, RNN)中,我们处理的是一段文字或语音等序列数据。对于文本任务,输入通常是单词序列…...
【Java】在 Spring Boot 中连接 MySQL 数据库
在 Spring Boot 中连接 MySQL 数据库是一个常见的任务。Spring Boot 提供了自动配置功能,使得连接 MySQL 数据库变得非常简单。以下是详细的步骤: 一、添加依赖 首先,确保你的pom.xml文件中包含了 Spring Boot 的 Starter Data JPA 和 MySQ…...
影响服务器稳定性的因素都有什么?
服务器的稳定性会影响到业务是否能够持续运行,用户在进行访问网站的过程中是否出现页面卡顿的情况,本文就来了解一下都是哪些因素影响着服务器的稳定性。 服务器中的硬件设备是保证服务器稳定运行的基础,企业选择高性能的处理器和大容量且高速…...

【Qt】Bug:findChildren找不到控件
使用正确的父对象调用 findChildren:不要在布局对象上调用 findChildren,而应该在布局所在的窗口或控件上调用。...
GitHub 趋势日报 (2025年05月30日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 833 agenticSeek 789 prompt-eng-interactive-tutorial 466 ai-agents-for-beginn…...

【linux】linux进程概念(四)(环境变量)超详细版
小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 linux系列专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录 前言一、基本概念二、认识常见的几个环境变量echo $ 查看某个环境变量env 显示…...
Qt程序添加调试输出窗口:CONFIG += console
目录 1.背景 2.解决方案 3.原理详解 4.控制台窗口的行为 5.条件编译(仅调试模式显示控制台) 6.替代方案 7.总结 1.背景 在Qt程序开发中,开发者经常遇到这样的困扰: 开发机上程序运行正常 发布到其他机器后程序无法启动 …...

从零开始的二三维CAD|CAE软件: 解决VTK,DICOM体素化-失效问题.
背景: 在从零开始的二三维软件开发中, 需要加载CT的dicoms影像文件, 并将其序列化之后的数据,体素化 可惜..vtk的c#库,将其体素化的时候,竟然失败... 使用vtkDicomReader ,设置 Dicom文件夹读取,竟然不停的失败...从网上找了一些版本.也没啥可用的资料... 解决办法: 直接…...
android协程异步编程常用方法
在 Android 开发中,Kotlin 协程是处理异步操作的首选方案,它能让异步代码更简洁、更易读。以下是 Android 协程异步编程的常用方法和模式: 一、基础构建块 1. launch 作用:启动一个新协程,不返回结果。适用场景&…...

【计算机网络】应用层协议Http——构建Http服务服务器
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【Linux笔记】——进程间关系与守护进程 🔖流水不争,争的是滔滔不息 一、Http协…...
【求A类B类月】2022-2-9
缘由编程求解,如内容所示题-Python-CSDN问答只写示例及注释 每月工作日只考虑周末情况,即只有周六、周日放假。每月第一个工作日如果是星期一则该月是A类月,每月最后一个工作日如果是星期五则该月是B类月。一个月可能是A类月也可能是B类月。…...
信息安全之为什么引入公钥密码
在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥,这里就涉及到密钥配送问题 那么什么时候密钥配送问题呢?举个简单的例子大家就清楚了, Alice 前几天在网上认识了Bob,现在她想给Bob…...

linux版本vmware修改ubuntu虚拟机为桥接模式
1、先打开linux版本vmware操作界面 2、设置虚拟路由编辑器的桥接模式 输入账号密码 自动模式 不需要进行任何操作 3、修改虚拟机设置网络模式为桥接模式 然后save保存一下配置 4、现在进入虚拟机查看ens33配置 网卡启动但是没有ip 5、自己进行设置修改ubuntu网络配置文件 cd …...
pytest 常见问题解答 (FAQ)
pytest 常见问题解答 (FAQ) 1. 基础问题 Q1: 如何让 pytest 发现我的测试文件? 测试文件命名需符合 test_*.py 或 *_test.py 模式测试函数/方法需以 test_ 开头测试类需以 Test 开头(且不能有__init__方法) Q2: 如何运行特定测试? pytest path/to/t…...

从0到1上手Trae:开启AI编程新时代
摘要:字节跳动 2025 年 1 月 19 日发布的 Trae 是一款 AI 原生集成开发环境工具,3 月 3 日国内版推出。它具备 AI 问答、代码自动补全、基于 Agent 编程等功能,能自动化开发任务,实现端到端开发。核心功能包括智能代码生成与补全、…...
HTTPS 协议:数据传输安全的坚实堡垒
在互联网技术飞速发展的今天,数据在网络中的传输无处不在。从日常浏览网页、在线购物,到企业间的数据交互,每一次信息传递都关乎着用户隐私、企业利益和网络安全。HTTP 协议作为互联网应用层的基础协议,曾经承担着数据传输的重任&…...
Spring Boot中使用@JsonAnyGetter和@JsonAnySetter处理动态JSON属性
Spring Boot 中使用 @JsonAnyGetter 和 @JsonAnySetter 处理动态 JSON 属性 在实际的后端开发中,尤其是使用 Spring Boot 构建 API 时,我们经常会遇到需要处理动态 JSON 属性的场景。例如,前端传递过来的 JSON 数据结构不固定,或者业务需求变更频繁,导致实体类无法预先定…...
Spring Boot测试框架全面解析
Spring Boot测试框架基础 Spring Boot通过增强Spring测试框架的能力,为开发者提供了一系列简化测试流程的新注解和特性。该框架建立在成熟的Spring测试基础之上,通过自动化配置和专用注解显著提升了测试效率。 核心依赖配置 要使用Spring Boot的全部测试功能,只需在项目中…...

Linux之MySQL安装篇
1.确保Yum环境是否能正常使用 使用yum环境进行软件的安装 yum -y install mysql-server mysql2.确保软件包已正常完成安装 3.设置防火墙和selinux配置 ## 关闭防火墙 systemctl stop firewalld## 修该selinux配置 vim /etc/selinux/config 将seliuxenforcing修改为sel…...

Asp.Net Core 如何配置在Swagger中带JWT报文头
文章目录 前言一、配置方法二、使用1、运行应用程序并导航到 /swagger2、点击右上角的 Authorize 按钮。3、输入 JWT 令牌,格式为 Bearer your_jwt_token。4、后续请求将自动携带 Authorization 头。 三、注意事项总结 前言 配置Swagger支持JWT 一、配置方法 在 …...

第12讲、Odoo 18 权限控制机制详解
目录 引言权限机制概述权限组(Groups)访问控制列表(ACL)记录规则(Record Rules)字段级权限控制按钮级权限控制菜单级权限控制综合案例:多层级权限控制最佳实践与注意事项总结 引言 Odoo 18 提…...

8086 处理器 Flags 标志位全解析:CPU 的 “晴雨表” 与 “遥控器”总结:
引入: 你是否好奇,当 CPU 执行一条加法指令时,如何自动判断结果是否超出范围?当程序跳转时,如何快速决定走哪条分支?甚至在调试程序时,为何能让 CPU “一步一停”?这一切的答案&…...

具有离散序列建模的统一多模态大语言模型【AnyGPT】
第1章 Instruction 在人工智能领域、多模态只语言模型的发展正迎来新的篇章。传统的大型语言模型(LLM)在理解和生成人类语言方面展现出了卓越的能力,但这些能力通常局限于 文本处理。然而,现实世界是一个本质上多模态的环境,生物体通过视觉、…...
PHP HTTP 完全指南
PHP HTTP 完全指南 引言 PHP 作为一种流行的服务器端脚本语言,广泛应用于各种Web开发项目中。HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一,用于在Web服务器和客户端之间传输数据。本文将详细介绍 PHP 在 HTTP 通信中的应用,帮助开发者更好地理解和利用 P…...