力扣labuladong一刷day24天

news/2025/2/23 6:10:05/

力扣labuladong一刷day24天

文章目录

      • 力扣labuladong一刷day24天
      • 一、875. 爱吃香蕉的珂珂
      • 二、1011. 在 D 天内送达包裹的能力
      • 三、410. 分割数组的最大值

一、875. 爱吃香蕉的珂珂

题目链接:https://leetcode.cn/problems/koko-eating-bananas/?utm_source=LCUS&utm_medium=ip_redirect&utm_campaign=transfer2china
思路:本质上是一个二分搜索左边界的问题,每个小时吃多少都可以,要找的是每小时吃k个,h个小时正好吃完,抽取出来计算用多少小时吃完的函数,小时数超了应该扩大k,小时数少了应该缩小k。

class Solution {public int minEatingSpeed(int[] piles, int h) {int left = 1, right = 1000000000;while (left <= right) {int mid = left + (right - left) / 2;if (f(mid, piles) <= h) {right = mid - 1;}else {left = mid + 1;}}return left;}long f(int k, int[] piles) {long h = 0;for (int i = 0; i < piles.length; i++) {h += piles[i] / k;if (piles[i] % k > 0) {h++;}}return h;}
}

二、1011. 在 D 天内送达包裹的能力

题目链接:https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/
思路:这题类似上一题,有 一个容量K,要求在day天运送完成所使用的最小k。在left和right的选取上要先设置好范围,最小就是最小的包裹,最大就是全体都能放下。计算天数时注意结尾的处理,最后没装满或者装多了只要不是正好是0都要多加1天。

class Solution {public int shipWithinDays(int[] weights, int days) {int left = 0;int right = 1;for (int w : weights) {left = Math.max(left, w);right += w;}while (left <= right) {int mid = left + (right - left) / 2;if (f(weights, mid) <= days) {right = mid - 1;}else {left = mid + 1;}}return left;}int f(int[] weights, int x) {int day = 0, sum = 0;for (int i = 0; i < weights.length; i++) {if (sum+weights[i] == x) {day++;sum = 0;}else if (sum + weights[i] < x) {sum += weights[i];}else {day++;sum = weights[i];}}return sum == 0 ? day : day+1;}
}

三、410. 分割数组的最大值

题目链接:https://leetcode.cn/problems/split-array-largest-sum/
思路:把数组顺序分成k个区间,要求所有的分法当中各个和最大区间的 最小值。其实也就是有很多货物,让k天运完,求船的最小容量,
一样是先确定left和right的边界,边界里的数是船的容量,不可能说船的容量装不下某一个货物,故left应该是所有货物中的最大值。right的话看天数要求,天数最少1天,right最大为货物总和。
f(mid) 与 k如何调节,其实直接分析就行,怎么写都可以,加入写成f(mid) <= k 那么说明船容量太大,导致天数少了,所以缩小容量天数就大了,即right = mid -1;
else就是 f(mid) > k 那么就是船的容量太小,导致天数多了,故扩大容量让天数变下,left = mid + 1;

class Solution {public int splitArray(int[] nums, int k) {int left = 0, right = 0;for (int i : nums) {left = Math.max(left, i);right += i;}while (left <= right) {int mid = left + (right - left) / 2;if (f(nums, mid) <= k) {right = mid - 1;}else {left = mid + 1;}}return left;}int f(int[] nums, int c) {int m = 0, sum = 0;for (int i = 0; i < nums.length; i++) {if (sum + nums[i] == c) {m++;sum = 0;} else if (sum + nums[i] < c) {sum += nums[i];}else {m++;sum = nums[i];}}return sum == 0 ? m : m + 1;}
}

http://www.ppmy.cn/news/1254528.html

相关文章

【spring(六)】WebSocket网络传输协议

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 核心概要&#xff1a; 概念介绍&#xff1a; 对比HTTP协议&#xff1a;⭐ WebSocket入门案例&#xff1a;⭐ 核心概要&#xff1a; websocket对比http 概念介绍&#xff1a; WebSocket是Web服务器的一个组件…

模板方法设计模式

package com.jmj.pattern.template;public abstract class AbstractClass {//模板方法定义public final void cookProcess(){pourOil();heatoil();pourVegetable();pourSauce();fry();}public void pourOil(){System.out.println("倒油");}public void heatoil(){Sys…

BearPi Std 板从入门到放弃 - 1 引气入体篇

安装相关开发工具 Keil MDK 工具下载 略, 自行体会 Keil 芯片支持包下载 Keil 包 网址 https://www.keil.com/pack 此处下载的是STM32L4xx的支持包 https://www.keil.com/pack/Keil.STM32L4xx_DFP.2.6.2.pack STM32CubeMX 下载与包下载 i. 下载&#xff08;需要使用用户&…

反序列化漏洞(二)

目录 pop链前置知识&#xff0c;魔术方法触发规则 pop构造链解释&#xff08;开始烧脑了&#xff09; 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识&#xff0c;魔术方法触…

TwinCAT3一个PLC设备里多个程序工程之间通讯

目录 1、创建TwinCAT3工程&#xff0c;再分别创建两个PLC程序工程 2、PLC1工程中添加如下代码&#xff0c;然后编译重新生成PLC1工程 3、PLC2工程中添加如下代码&#xff0c;然后编译重新生成PLC2工程 4、变量关联 5、一个PLC运行多个PLC工程设置 7、工程下载链接 1、创建…

Nested Named Entity Recognition with Span-level Graphs

原文链接&#xff1a; https://aclanthology.org/2022.acl-long.63.pdf ACL 2022 介绍 问题 基于span的方法虽然在解决嵌套实体上存在巨大潜力&#xff0c;但存在以下问题&#xff1a; 1&#xff09;难以充分利用span的丰富语义&#xff1b; 2&#xff09;重叠较多的正负样本会…

三 STM32F4使用Sys_Tick 实现微秒定时器和延时

更多细节参考这篇 1. 什么是时钟以及作用 1.1 什么是时钟 时钟是由电路产生的周期性的脉冲信号&#xff0c;相当于单片机的心脏 1.2 时钟对于STM32的作用 指令同步&#xff1a;cpu和内核外设使用时钟信号来进行指令同步数据传输控制&#xff1a; 时钟信号控制数据在内部总…

【算法专题】二分查找

二分查找 二分查找1. 二分查找2. 在排序数组中查找元素的第一和最后一个位置3. 搜索插入位置4. x 的平方根5. 山脉数组的峰顶索引6. 寻找峰值7. 寻找旋转排序数组中的最小值8. 点名 二分查找 1. 二分查找 题目链接 -> Leetcode -704.二分查找 Leetcode -704.二分查找 题…