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

每日算法-250409

这是我今天的算法学习记录。


2187. 完成旅途的最少时间

题目描述

LeetCode 2187 Problem Description

思路

二分查找

解题过程

为什么可以使用二分查找?
问题的关键在于寻找一个最小的时间 t,使得在时间 t 内所有公交车完成的总旅途次数 sum 大于等于 totalTrips
我们可以观察到时间的单调性:如果时间 t 内可以完成 totalTrips 次旅途,那么任何大于 t 的时间 t' 肯定也可以完成(甚至完成更多)。反之,如果时间 t 内无法完成 totalTrips 次旅途(即 sum < totalTrips),那么任何小于 t 的时间 t'' 也肯定无法完成。

这种单调性(或称为“二段性”)是使用二分查找的前提。我们可以在一个可能的时间范围内(例如从 1 到一个足够大的上限)进行二分查找。

查找目标是什么?
我们要找的是满足 sum >= totalTrips最小时间 t

二分步骤:

  1. 确定查找范围 [left, right]left 可以是 1,right 可以是一个合理的上界,例如 min(time) * totalTrips(即假设只有最快的车在跑,完成所有旅程所需的时间)。
  2. 取中间时间 mid = left + (right - left) / 2
  3. 计算在 mid 时间内,所有公交车能完成的总旅途次数 sumsum = Σ (mid / time[i]) 对所有 i 求和。
  4. 比较 sumtotalTrips
    • 如果 sum < totalTrips,说明 mid 时间太短,无法完成任务。真正的最短时间一定在 mid 右侧,所以更新 left = mid + 1
    • 如果 sum >= totalTrips,说明 mid 时间可能是答案,或者可能还有更短的时间也满足条件。我们需要尝试更小的时间,所以更新 right = mid - 1
  5. 循环直到 left > right。最终的 left 就是满足条件的最小时间。

复杂度

  • 时间复杂度: O ( N log ⁡ M ) O(N \log M) O(NlogM)
    • 其中 N 是公交车的数量 (time.length)。
    • M 是二分查找的时间范围的上界。在代码中,上界设置为 min(time) * totalTrips。每次二分查找需要 O ( N ) O(N) O(N) 的时间来计算 sum 函数,二分查找本身需要 O ( log ⁡ M ) O(\log M) O(logM) 次迭代。
  • 空间复杂度: O ( 1 ) O(1) O(1)
    • 我们只需要常数级别的额外空间。

Code

class Solution {public long minimumTime(int[] time, int totalTrips) {long left = 1, right = Integer.MAX_VALUE;for (int x : time) {right = Math.min(right, x);}right *= totalTrips;while (left <= right) {long mid = left + (right - left) / 2;if (sum(time, mid) < totalTrips) {left = mid + 1;} else {right = mid - 1;}}return left;}private long sum(int[] arr, long k) {long sum = 0;for (int x : arr) {sum += (k / x);}return sum;}
}

34. 在排序数组中查找元素的第一个和最后一个位置(复习)

题目描述

LeetCode 34 Problem Description

今天是第二次写这道题,和上次相比已经理解了步骤,可以完全解决问题了。

详细题解见我之前的博文:每日算法-250405

Code

class Solution {public int[] searchRange(int[] nums, int target) {int left = check(nums, target);if (left == nums.length || nums[left] != target) {return new int[] {-1, -1};}int right = check(nums, target + 1) - 1;return new int[] {left, right};}private int check(int[] arr, int k) {int left = 0, right = arr.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] < k) {left = mid + 1;} else {right = mid - 1;}}return left;}
}

2529. 正整数和负整数的最大计数(复习)

题目描述

LeetCode 2529 Problem Description

今天是第二次写这道题,写的已经很顺手了,就不过多解释了。

详细题解见我之前的博文:每日算法-250406

Code

class Solution {public int maximumCount(int[] nums) {int neg = check(nums, 0);int pos = check(nums, 1);return Math.max(neg, (nums.length - pos));}private int check(int[] arr, int k) {int left = 0, right = arr.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] < k) {left = mid + 1;} else {right = mid - 1;}}return left;}
}

相关文章:

每日算法-250409

这是我今天的算法学习记录。 2187. 完成旅途的最少时间 题目描述 思路 二分查找 解题过程 为什么可以使用二分查找&#xff1f; 问题的关键在于寻找一个最小的时间 t&#xff0c;使得在时间 t 内所有公交车完成的总旅途次数 sum 大于等于 totalTrips。 我们可以观察到时间的单…...

【CSS 选择器组合规则详解】

基础选择器组合 空格&#xff1a;后代选择器 > 直接子元素选择器 . 类选择器 : 伪类选择器 多类选择器 .class1.class2 &#xff1a;多类组合 .class1 .class2 &#xff1a;类的所有后代 .class1 > .class2 &#xff1a;类的子元素特殊选择器 :nth-child() :nth-of-…...

手机静态ip地址怎么获取?方法与解析‌

而在某些特定情境下&#xff0c;我们可能需要为手机设置一个静态IP地址。本文将详细介绍手机静态IP地址详解及获取方法 一、什么是静态IP地址&#xff1f; 静态IP&#xff1a;由用户手动设置的固定IP地址&#xff0c;不会因网络重启或设备重连而改变。 动态IP&#xff1a;由路…...

NumPy对二维矩阵中的每个元素进行加减乘除和对数运算

使用NumPy对二维矩阵中的每个元素进行加减乘除和对数运算的方法如下&#xff1a; 1. 加减乘除运算 对每个元素进行标量运算&#xff0c;可直接使用算术运算符。 示例代码&#xff1a; import numpy as nparr np.array([[1, 2], [3, 4]])# 加法 result_add arr 5 print(&…...

基于C8051F340单片机的精确定时1S的C程序

一、前言 C8051F340单片的定时器2 是一个 16 位的计数器/定时器&#xff0c;由两个 8 位的 SFR 组成&#xff1a;TMR2L&#xff08;低字节&#xff09;和TMR2H&#xff08;高字节&#xff09;。定时器 2 可以工作在 16 位自动重装载方式、8 位自动重装载方式&#xff08;两个 …...

提升Windows安全的一些措施

由简单到复杂&#xff0c;仅供参考 一、杀毒软件&#xff1a; 1、杀毒能力&#xff1a; https://haokan.hao123.com/v?vid3883775443252827335&pdhaokan_share 2、使用注意&#xff1a; 一台主机只安装一个杀毒软件就可以了 杀毒软件会误报&#xff0c;造成正常文件…...

中科岩创基坑自动化监测解决方案

1.行业现状 城市基坑开挖具有施工风险高、施工难度大等特点。由于地下土体性质、荷载条件、施工环境的复杂性&#xff0c;单根据地质勘察资料和室内土工试验参数来确定设计和施工方案&#xff0c;往往含有许多不确定因素&#xff0c;对在施工过程中引发的土体性状、环境、邻近建…...

Elasticsearch 系列专题 - 第二篇:数据建模与索引管理

在掌握了 Elasticsearch 的基本概念和操作后,本篇将重点介绍如何设计和管理索引,以及如何高效地导入和维护数据。这对于构建一个高效、可扩展的搜索系统至关重要。 1. 索引设计 1.1 如何选择合适的索引结构 索引是 Elasticsearch 的核心,设计时需考虑以下因素: 数据用途:…...

解决缓存穿透的布隆过滤器与布谷鸟过滤器:谁更适合你的应用场景?

目录 一、布隆过滤器&#xff1a;高效的空间节省者 1.1 布隆过滤器是什么&#xff1f; 1.2 工作原理 1.3 优点 1.4 缺点 1.5 适用场景 二、布谷鸟过滤器&#xff1a;解决删除难题的创新者 2.1 布谷鸟过滤器是什么&#xff1f; 2.2 工作原理 2.3 优点 2.4 缺点 2.5 适用场景 三、…...

OpenHarmony子系统开发 - 调测工具(一)

OpenHarmony子系统开发 - 调测工具&#xff08;一&#xff09; 一、bytrace使用指导 简介 bytrace是开发人员用于追踪进程轨迹、分析性能的一种工具&#xff0c;主要对内核ftrace进行了封装和扩展&#xff0c;来支持用户态的打点。通过该工具可以打开想要查看的用户态和内核l…...

Qt中的鼠标事件

1.鼠标进入事件和鼠标离开事件 1.1添加新文件 1.2ui界面 拖出一个Label控件&#xff0c;修改frameShape为Box&#xff0c;使边框更明显 1.3代码实现 #ifndef MYLABEL_H #define MYLABEL_H#include <QLabel>class myLabel : public QLabel {Q_OBJECT public:explicit m…...

MySQL JOIN详解:INNER JOIN与LEFT JOIN的选择与应用

在数据库查询中&#xff0c;JOIN操作是最常用也最重要的操作之一。不同的JOIN类型会导致完全不同的查询结果&#xff0c;正确选择JOIN类型是编写高效、准确SQL查询的关键。本文将深入探讨INNER JOIN和LEFT JOIN的区别、应用场景以及常见问题。 一、JOIN基础概念 1. 什么是JOI…...

Flink 反压下的 TCP 流控制

1. 什么是 Flink 反压和 TCP 流控制&#xff1f; 反压&#xff08;Backpressure&#xff09;是什么&#xff1f; 反压是分布式流处理系统中一种自我调节机制。当下游处理数据的速度跟不上上游发送数据的速度时&#xff0c;反压会让上游放慢发送速度&#xff0c;以避免系统过载…...

山东大学软件学院项目实训开发日志(7)之测试前后端本地部署

基于队长搭建的springbootvue框架&#xff0c;在本地进行测试搭建。 在运行后端过程中&#xff0c;出现下图错误&#xff1a; 查找后发现这个问题出现在 Maven 项目的 pom.xml 文件中&#xff0c;显示找不到一些依赖项。所以在此进行最简单的重新加载项目得以解决&#xff0c;…...

YOLOv11训练中精准率召回率与mAP@0.5的动态变化分析

目标检测模型的训练过程涉及多个关键性能指标和损失函数的变化&#xff0c;这些数据能够直观反映模型的收敛速度、最终精度以及改进效果。本文旨在通过绘制YOLOv11模型在训练过程中的精准率&#xff08;Precision&#xff09;、召回率&#xff08;Recall&#xff09;、mAP0.5 、…...

Windows下ElasticSearch8.x的安装步骤

下载ElasticSearch&#xff1a;https://www.elastic.co/downloads/elasticsearch &#xff08;我下载的是目前最新版8.17.4&#xff09;解压ElasticSearch 进入到ElasticSearch的bin目录下双击elasticsearch.bat 弹出控制台并开始执行&#xff0c;在这一步会输出初始账号和密码…...

Leetcode hot100 (day 8,9)

爬楼梯 做法一&#xff1a;小斐波那契数列&#xff0c;只要注意记忆化递归即可 class Solution { public:int dp[50];int climbStairs(int n) {if(dp[n])return dp[n];if(n2){return dp[2]2;}if(n1){return dp[1]1;}//if(dp[n])return dp[n];return dp[n]climbStairs(n-1)clim…...

LinuxSocket套接字编程

1.介绍函数使用 1.创建套接字 int socket(int domain, int type, int protocol); domain&#xff1a;指定协议族&#xff0c;如AF_INET&#xff08;IPv4&#xff09;或AF_INET6&#xff08;IPv6&#xff09;。 type&#xff1a;指定套接字类型&#xff0c;如SOCK_DGRAM&#…...

青少年编程考试 CCF GESP Python五级认证真题 2025年3月

Python 五级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 A A A B D B A D A D C A A D B 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 链表不具备的特点是( )。 A. 可随机访问任何一个元素 B. 插入、删除操作不需要移动元素 C…...

Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌套list等场景

实体字段比较器&#xff08;对比两组对象找出发生变化的字段工具类开发&#xff09; 支持枚举映射 支持时间 支持显示对应字段中文描述 支持嵌套list等场景 下载地址&#xff1a; Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌…...

电影舆情分析可视化平台管理端实现

电影舆情分析可视化平台管理端实现 系统概述 本系统的用户主要有三类&#xff0c;游客、普通用户以及电影从业人员。 面向游客和普通用户的是电影网站&#xff0c;系统提供一个便捷的平台&#xff0c;供普通用户搜索和了解电影的基本信息&#xff0c;支持电影预告片播放&…...

【Linux】进程信号(下)

在上一篇中&#xff0c;我们详细探讨了信号的预备知识和产生方式&#xff08;如硬件异常、终端输入、kill命令、系统调用等&#xff09;及其背后的操作系统行为。信号作为进程间异步通信的核心机制&#xff0c;其生命周期远不止“产生”这一环节——信号的保存与处理才是实现可…...

华为数字芯片机考2025合集2已校正

单选 1. 题目内容 关于亚稳态的描述错误的是&#xff08; &#xff09;。 1. 解题步骤 1.1 理解亚稳态&#xff08;Metastability&#xff09;的核心特性 亚稳态是指触发器无法在指定时间内稳定输出有效逻辑电平&#xff08;0或1&#xff09;的状态&#xff0c;其关键特点…...

【大模型微调】如何解决llamaFactory微调效果与vllm部署效果不一致如何解决

以下个人没整理太全 一、生成式语言模型的对话模板介绍 使用Qwen/Qwen1.5-0.5B-Chat训练 对话模板不一样。回答的内容就会不一样。 我们可以看到例如qwen模型的tokenizer_config.json文件&#xff0c;就可以看到对话模板&#xff0c;一般同系列的模型&#xff0c;模板基本都…...

基于视觉语言模型的机器人实时探索系统!ClipRover:移动机器人零样本视觉语言探索和目标发现

作者&#xff1a;Yuxuan Zhang 1 ^{1} 1, Adnan Abdullah 2 ^{2} 2, Sanjeev J. Koppal 3 ^{3} 3, and Md Jahidul Islam 4 ^{4} 4单位&#xff1a; 2 , 4 ^{2,4} 2,4佛罗里达大学电气与计算机工程系RoboPI实验室&#xff0c; 1 , 3 ^{1,3} 1,3佛罗里达大学电气与计算机工程系F…...

Java常用工具算法-6--秘钥托管云服务AWS KMS

前言&#xff1a; 之前我们介绍了一些常用的加密算法&#xff08;如&#xff1a;对称加密AES&#xff0c;非对称加密RSA&#xff0c;ECC等&#xff09;&#xff0c;不论是哪一种都需要涉及到秘钥的管理。通常的做法都是把秘钥放到配置文件中进行配置&#xff0c;但是对于一些高…...

Shell脚本的学习

编写脚本文件 定义以开头&#xff1a;#!/bin/bash #!用来声明脚本由什么shell解释&#xff0c;否则使用默认shel 第一步&#xff1a;编写脚本文件 #!/bin/bash #注释 echo "这是输出" 第二步&#xff1a;加上执行权限&#xff1a;chmod x 脚本文件名.sh 第三步&…...

Java——pdf增加水印

文章目录 前言方式一 itextpdf项目依赖引入编写PDF添加水印工具类测试效果展示 方式二 pdfbox依赖引入编写实现类效果展示 扩展1、将inputstream流信息添加水印并导出zip2、部署出现找不到指定字体文件 资料参考 前言 近期为了知识库文件导出&#xff0c;文件数据安全处理&…...

Redis过期key处理、内存淘汰策略与缓存一致性策略实践方案

在现代的高性能应用开发中&#xff0c;Redis作为一款极为热门的内存数据库&#xff0c;其快速的读写性能和丰富的数据结构使其在缓存、消息队列等诸多领域得到了广泛应用。然而&#xff0c;在实际使用过程中&#xff0c;处理好Redis过期key、选择合适的内存淘汰策略以及确保缓存…...

深入 C++ 线程库:从创建到同步的探索之旅

C在<thread>中定义了C线程库. 创建多线程 #include <iostream> #include <thread> using namespace std; void show(int id, int count) { //线程函数for (int i 0; i < count; i) {cout << "id:" << id << ",值:&qu…...

LangChain使用大语言模型构建强大的应用程序

LangChain简介 LangChain是一个强大的框架&#xff0c;旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#xff…...

程序化广告行业(72/89):Tag Manager系统代码操作与行业发展剖析

程序化广告行业&#xff08;72/89&#xff09;&#xff1a;Tag Manager系统代码操作与行业发展剖析 大家好&#xff01;在技术领域不断探索的过程中&#xff0c;我深刻体会到知识共享的重要性。写这篇博客&#xff0c;就是希望能和大家一起深入了解程序化广告行业&#xff0c;…...

数据结构实验3.3:求解迷宫路径问题

文章目录 一&#xff0c;问题描述二&#xff0c;基本要求三&#xff0c;算法分析&#xff08;一&#xff09;整体思路&#xff08;二&#xff09;详细步骤1. 输入迷宫大小并生成迷宫2. 定义走步规则3. 深度优先搜索&#xff08;DFS&#xff09;4. 输出结果 &#xff08;三&…...

基于SpringBoot的线上历史馆藏系统【附源码】

基于SpringBoot的线上历史馆藏系统&#xff08;源码L文说明文档&#xff09; 4 系统设计 系统在设计的过程中&#xff0c;必然要遵循一定的原则才可以&#xff0c;胡乱设计是不可取的。首先用户在使用过程中&#xff0c;能够直观感受到功能操作的便利性&#xff0c;符合…...

Mybatis的springboot项目使用

删除数据 & 占位符 一般常用占位符进行数据库操作&#xff0c;也就是预编译sql。 在UserMapper中定义删除接口 /** 根据id删除用户*/ Delete("delete from user where id #{id}") void deleteById(Integer id);若想要获取返回值&#xff0c;声明为Integer (s…...

网站集群批量管理-Ansible剧本与变量

复盘内容&#xff1a;链接指北 查看ansible命令文档 ansible-doc -s systemd一、剧本 何为剧本: playbook 文件,用于长久保存并且实现批量管理,维护,部署的文件. 类似于脚本存放命令和变量 剧本yaml格式,yaml格式的文件:空格,冒号. 剧本未来我们批量管理,运维必会的内容. …...

HOW - React Developer Tools 调试器

目录 React Developer Tools使用Components 功能特性1. 查看和编辑 props/state/hooks2. 查找组件3. 检查组件树4. 打印组件信息5. 检查子组件 Profiler 功能特性Commit ChartFlame Chart 火焰图Ranked Chart 排名图 why-did-you-render 参考文档&#xff1a; React调试利器&a…...

Spring Cloud Alibaba微服务治理实战:Nacos+Sentinel深度解析

一、引言 在微服务架构中&#xff0c;服务发现、配置管理、流量控制是保障系统稳定性的核心问题。Spring Cloud Netflix 生态曾主导微服务解决方案&#xff0c;但其部分组件&#xff08;如 Eureka、Hystrix&#xff09;已进入维护模式。 Spring Cloud Alibaba 凭借 高性能、轻…...

《AI换脸时代的攻防暗战:从技术滥用走向可信未来》

技术迭代图谱 过去五年里&#xff0c;Deepfake技术经历了飞速迭代&#xff0c;从最初的萌芽到如今的广泛应用和对抗措施形成。2017年前后&#xff0c;利用深度学习进行人脸换装的技术首次在社区中出现。一位Reddit网友昵称“deepfakes”&#xff0c;将名人面孔替换到色情影片上…...

25/4/9 算法笔记 DBGAN+强化学习+迁移学习实现青光眼图像去模糊1

整体实验介绍 实验主要是结合DBGAN对抗网络强化学习增强迁移学习增强实现青光眼图像去模糊。今天则是先完成了DBGAN板块模型的训练。 实验背景介绍 青光眼的主要特征有&#xff1a; 视盘形态与杯盘比CDR&#xff1a;青光眼患者主要表现为视杯扩大&#xff0c;盘沿变窄。 视…...

【Claude AI大语言模型连接Blender生成资产】Windows安装Blender MCP教程

前言 最近在学习资产制作&#xff0c;了解到了个好玩的东西&#xff0c;利用AI一步一步搭建资产&#xff1a; 上面这副图就是利用Claude AI调用Blender的Python接口一步一步实现的&#xff0c;挺丑但好玩。 安装教程 进入Github: Blender-MCP 网站&#xff0c;下载该项目&a…...

JSP运行环境安装及常用HTML标记使用

制作一个静态网站的基本页面index.html 实验代码&#xff1a;<form> <label for"username">用户名:</label> <input type"text" id"username" name"username"><br> <label for"password&…...

Git 的进阶功能和技巧

1、分支的概念和使用 1.1、什么是分支&#xff1f; 分支&#xff08;Branch&#xff09;是在版本控制中非常重要的概念。几乎所有版本控制系统都支持某种形式的分支。在 Git 中&#xff0c;分支是 Git 强大功能之一&#xff0c;它允许我们从主开发线分离出来&#xff0c;在不…...

WSL1升级到WSL2注意事项

今天要在WSL上安装docker&#xff0c;因为机器上安装了wsl1&#xff0c;docker安装后启动不了&#xff0c;通过询问deepseek发现docker只能在wsl2上安装&#xff0c;因此就想着将本机的wsl1升级到wsl2。 确保你的 Windows 系统是 Windows 10&#xff08;版本 1903 及以上&…...

392. 判断子序列

https://leetcode.cn/problems/is-subsequence/?envTypestudy-plan-v2&envIdtop-interview-150因为是子序列我们只要关心后一个字符在前一个字符后面出现过就行&#xff0c;至于在哪出现出现几次我们不关心&#xff0c;所以我们可以用HashMap<Character, ArrayList<…...

在 VMware 中为 Ubuntu 24.04 虚拟机设置共享文件夹后,在虚拟机中未能看到共享的内容

在 VMware 中为 Ubuntu 24.04 虚拟机设置共享文件夹后&#xff0c;如果在虚拟机中未能看到共享的内容&#xff0c;可能是由于以下原因&#xff1a; VMware Tools 未正确安装&#xff1a;共享文件夹功能依赖于 VMware Tools 或 Open VM Tools。如果未安装或安装不完整&#xff0…...

台式电脑插入耳机没有声音或麦克风不管用

目录 一、如何确定插孔对应功能1.常见音频插孔颜色及功能2.如何确认电脑插孔?3.常见问题二、 解决方案1. 检查耳机连接和设备选择2. 检查音量设置和静音状态3. 更新或重新安装声卡驱动4. 检查默认音频格式5. 禁用音频增强功能6. 排查硬件问题7. 检查系统服务8. BIOS设置(可选…...

Windchill开发-WTContainer相关API整理

Windchill开发-WTContainer相关API整理 概述各容器对象相关方法站点容器组织容器产品容器/存储库容器上下文团队角色组 文件夹 方法汇总 概述 Windchill 的环境由一组容器组成&#xff0c;容器分为三级&#xff1a;第一级为站点容器&#xff0c;第二级为组织容器&#xff0c;第…...

理解JSON-RPC 2.0 协议

JSON-RPC 2.0是指一种基于 JSON 的远程过程调用协议&#xff0c;用于在网络上进行跨平台和跨语言的通信。它提供了一种简单、轻量级的方式来实现客户端和服务器之间的方法调用和数据交换。在原文中&#xff0c;JSON-RPC 2.0被用来描述 STDIO 传输机制中消息的格式&#xff0c;即…...

【 C# 使用 MiniExcel 库的典型场景】

以下是 C# 使用 MiniExcel 库的典型场景及代码示例&#xff1a; 一、基础读取操作 强类型读取‌&#xff08;需定义数据模型类&#xff09; 定义与 Excel 列名匹配的类后直接映射为对象集合&#xff1a; csharp Copy Code public class UserAccount { public int Id { get; …...