每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h

news2025/6/3 8:18:07
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;
            } else
                left = 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;
            } else
                left = mid + 1;
        }
        return res;
    }
};

1.不用转换为long long的,可以写成1LL

8. 1482.制作m束花所需的最少天数

1482. 制作 m 束花所需的最少天数 - 力扣(LeetCode)

思想

1.给你一个整数数组 bloomDay,以及两个整数 mk 。现需要制作 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;
            } else
                left = mid + 1;
        }
        return res;
    }
};

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

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

相关文章

关于镜像如何装进虚拟机

本篇文章为感谢小仙猪老师特别编写 本篇文章仅以Ubuntu为例 目录 创建虚拟机 汉化 如果没有China选项 检查网络 创建虚拟机 第一步&#xff0c;创建虚拟机 因为&#xff0c;第一个选项是会把虚拟机的文件放在c盘因此&#xff0c;这里博主选择自定义&#xff0c;然后下一…

智慧体育馆数字孪生,场馆管理智能化

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

回归算法模型之线性回归

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

【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA

深度推理&#xff08;含链式法则详解&#xff09;RNN, LSTM, GRU&#xff0c;VQA RNN 输入表示方式 在循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;中&#xff0c;我们处理的是一段文字或语音等序列数据。对于文本任务&#xff0c;输入通常是单词序列…

【Qt】Bug:findChildren找不到控件

使用正确的父对象调用 findChildren&#xff1a;不要在布局对象上调用 findChildren&#xff0c;而应该在布局所在的窗口或控件上调用。

【linux】linux进程概念(四)(环境变量)超详细版

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 linux系列专栏<—请点击 倘若命中无此运&#xff0c;孤身亦可登昆仑&#xff0c;送给屏幕面前的读者朋友们和小编自己! 目录 前言一、基本概念二、认识常见的几个环境变量echo $ 查看某个环境变量env 显示…

从零开始的二三维CAD|CAE软件: 解决VTK,DICOM体素化-失效问题.

背景: 在从零开始的二三维软件开发中, 需要加载CT的dicoms影像文件, 并将其序列化之后的数据,体素化 可惜..vtk的c#库,将其体素化的时候,竟然失败... 使用vtkDicomReader ,设置 Dicom文件夹读取,竟然不停的失败...从网上找了一些版本.也没啥可用的资料... 解决办法: 直接…

【计算机网络】应用层协议Http——构建Http服务服务器

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a; 【Linux笔记】——进程间关系与守护进程 &#x1f516;流水不争&#xff0c;争的是滔滔不息 一、Http协…

linux版本vmware修改ubuntu虚拟机为桥接模式

1、先打开linux版本vmware操作界面 2、设置虚拟路由编辑器的桥接模式 输入账号密码 自动模式 不需要进行任何操作 3、修改虚拟机设置网络模式为桥接模式 然后save保存一下配置 4、现在进入虚拟机查看ens33配置 网卡启动但是没有ip 5、自己进行设置修改ubuntu网络配置文件 cd …

从0到1上手Trae:开启AI编程新时代

摘要&#xff1a;字节跳动 2025 年 1 月 19 日发布的 Trae 是一款 AI 原生集成开发环境工具&#xff0c;3 月 3 日国内版推出。它具备 AI 问答、代码自动补全、基于 Agent 编程等功能&#xff0c;能自动化开发任务&#xff0c;实现端到端开发。核心功能包括智能代码生成与补全、…

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 令牌&#xff0c;格式为 Bearer your_jwt_token。4、后续请求将自动携带 Authorization 头。 三、注意事项总结 前言 配置Swagger支持JWT 一、配置方法 在 …

第12讲、Odoo 18 权限控制机制详解

目录 引言权限机制概述权限组&#xff08;Groups&#xff09;访问控制列表&#xff08;ACL&#xff09;记录规则&#xff08;Record Rules&#xff09;字段级权限控制按钮级权限控制菜单级权限控制综合案例&#xff1a;多层级权限控制最佳实践与注意事项总结 引言 Odoo 18 提…

8086 处理器 Flags 标志位全解析:CPU 的 “晴雨表” 与 “遥控器”总结:

引入&#xff1a; 你是否好奇&#xff0c;当 CPU 执行一条加法指令时&#xff0c;如何自动判断结果是否超出范围&#xff1f;当程序跳转时&#xff0c;如何快速决定走哪条分支&#xff1f;甚至在调试程序时&#xff0c;为何能让 CPU “一步一停”&#xff1f;这一切的答案&…

具有离散序列建模的统一多模态大语言模型【AnyGPT】

第1章 Instruction 在人工智能领域、多模态只语言模型的发展正迎来新的篇章。传统的大型语言模型(LLM)在理解和生成人类语言方面展现出了卓越的能力&#xff0c;但这些能力通常局限于 文本处理。然而&#xff0c;现实世界是一个本质上多模态的环境&#xff0c;生物体通过视觉、…

物流项目第九期(MongoDB的应用之作业范围)

本项目专栏&#xff1a; 物流项目_Auc23的博客-CSDN博客 建议先看这期&#xff1a; MongoDB入门之Java的使用-CSDN博客 需求分析 在项目中&#xff0c;会有两个作业范围&#xff0c;分别是机构作业范围和快递员作业范围&#xff0c;这两个作业范围的逻辑是一致的&#xf…

系统思考:经营决策沙盘

今年是我为黄浦区某国有油漆涂料企业提供经营决策沙盘培训的第二年。在这段时间里&#xff0c;我越来越感受到&#xff0c;企业的最大成本往往不在生产环节&#xff0c;而是在决策错误上所带来的长远影响。尤其是在如今这个复杂多变的环境下&#xff0c;企业面临的挑战愈发严峻…

[网页五子棋][对战模块]实现游戏房间页面,服务器开发(创建落子请求/响应对象)

实现游戏房间页面 创建 css/game_room.css #screen 用于显示当前的状态&#xff0c;例如“等待玩家连接中…”&#xff0c;“轮到你落子”&#xff0c;“轮到对方落子”等 #screen { width: 450px; height: 50px; margin-top: 10px; color: #8f4e19; font-size: 28px; …

Centos环境下安装/重装MySQL完整教程

目录 一、卸载残留的MySQL环境&#xff1a; 二、安装MySQL&#xff1a; 1、下载MySQL官方的yum源&#xff1a; 2、更新系统yum源&#xff1a; 3、确保系统中有了对应的MySQL安装包&#xff1a; 4、安装MySQL服务&#xff1a; 5、密钥问题安装失败解决方法&#xff1a; …

【Linux】环境变量完全解析

9.环境变量 文章目录 9.环境变量一、命令行参数二、获取环境变量程序中获取环境变量1. 使用命令行参数2. 使用系统调用函数getenv("字符串");3. 使用系统提供的全局变量environ 命令行中查询环境变量 三、常见环境变量1. HOME2. OLDPWD3. PATH4. SHELL 四、环境变量与…