每日算法4/21

LCR 073. 爱吃香蕉的狒狒

题目

狒狒喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。

狒狒可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉,下一个小时才会开始吃另一堆的香蕉。  

狒狒喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。

返回她可以在 H 小时内吃掉所有香蕉的最小速度 KK 为整数)。

示例 1:

输入: piles = [3,6,7,11], H = 8
输出: 4

示例 2:

输入: piles = [30,11,23,4,20], H = 5
输出: 30

示例 3:

输入: piles = [30,11,23,4,20], H = 6
输出: 23

提示:

  • 1 <= piles.length <= 10^4
  • piles.length <= H <= 10^9
  • 1 <= piles[i] <= 10^9

思路

二分答案

  1. 首先确定答案的区间范围
  2. 然后根据题目建立check函数
  3. 然后不断对答案区间进行二分找到符合题目的答案 

代码

bool check(int* piles, int pilesSize, int h, int mid) {
    long int sum = 0;
    for (int i = 0; i < pilesSize; i++) {
        sum += (piles[i] + mid - 1) / mid;
    }
    return sum <= h;
}
int minEatingSpeed(int* piles, int pilesSize, int h) {
    int l = 1;
    int r = 0;
    for (int i = 0; i < pilesSize; i++) {
        if (piles[i] >= r)
            r = piles[i];
    }
    int ans = 0;
    while (l <= r) {
        int mid = (r + l) / 2;
        if (check(piles, pilesSize, h, mid)) {
            ans = mid;
            r = mid - 1;
        } else {
            l = mid + 1;
        }
    }
    return ans;
}

64. 最小路径和

题目

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

输入:grid = [[1,2,3],[4,5,6]]
输出:12

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 200

思路

定义 dp[i] [j]的含义为:

  • 当机器人从左上角走到(i, j) 这个位置时,最下的路径和是 dp[i] [j]

找出关系数组元素间的关系式:

  • 由于机器人可以向下走或者向右走,所以有两种方式到达
  • 一种是从 (i-1, j) 这个位置走一步到达
  • 一种是从(i, j - 1) 这个位置走一步到达
  • 题目是计算哪一个路径和是最小的,那么我们要从这两种方式中,选择一种,使得dp[i] [j] 的值是最小的,显然有dp[i] [j] = min(dp[i-1][j],dp[i][j-1]) + arr[i][j];

找出初始值:

最上面一行,机器人只能一直往左走:dp[0] [j] = arr[0] [j] + dp[0] [j-1];

最左面一列,机器人只能一直往下走:dp[i] [0] = arr[i] [0] + dp[i] [0];

代码

int minPathSum(int** grid, int gridSize, int* gridColSize) {
    int m = *gridColSize;
    int n = gridSize;
    if (m < 0 || n < 0) {
        return 0;
    }
    int dp[m][n];
    dp[0][0] = grid[0][0];
    for (int i = 1; i < m; i++) {
        dp[i][0] = dp[i - 1][0] + grid[i][0];
    }
    for (int i = 1; i < n; i++) {
        dp[0][i] = dp[0][i - 1] + grid[0][i];
    }
    for (int i = 1; i < n; i++) {
        for (int j = 1; j < n; j++) {
            dp[i][j] = fmin(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
        }
    }
    return dp[m - 1][n - 1];
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-电话号码的字母组合(回溯)

每日一题 今天刷到的是一道利用回溯来解决的题&#xff0c;不过稍微有点复杂&#xff0c;并且我也有一段时间没有做回溯了&#xff0c;所有在解题时也是思考了一段时间。 题目要求 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意…

大数据Spark--运行环境和架构

文章目录 Spark运行环境Local模式解压缩文件启动 Local 环境命令行工具退出本地模式提交应用 Standalone 模式解压缩文件修改配置文件启动集群提交应用提交参数说明配置历史服务配置高可用&#xff08;HA Yarn模式解压缩文件修改配置文件启动HDFS 以及YARN集群配置历史服务器 K…

【深度学习实战(11)】搭建自己的dataset和dataloader

一、dataset和dataloader要点说明 在我们搭建自己的网络时&#xff0c;往往需要定义自己的dataset和dataloader&#xff0c;将图像和标签数据送入模型。 &#xff08;1&#xff09;在我们定义dataset时&#xff0c;需要继承torch.utils.data.dataset&#xff0c;再重写三个方法…

计算机体系结构

体系结构 CPU&#xff1a;运算器和控制器 运算器&#xff1a;进行算术和逻辑运算控制器&#xff1a; 输入设备&#xff1a;鼠标、键盘、显示器、磁盘、网卡等输出设备&#xff1a;显卡&#xff0c;磁盘、网卡、打印机等存储器&#xff1a;内存&#xff0c;掉电易失总线&#xf…

刷题DAY59 | LeetCode 503-下一个更大元素II 42-接雨水

503 下一个更大元素II&#xff08;medium&#xff09; 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个…

基于SpringBoot + Vue实现的奖学金管理系统设计与实现+毕业论文+答辩PPT

介绍 角色:管理员、学院负责人、学校负责人、学生 管理员:管理员登录进入高校奖助学金系统的实现可以查看系统首页、个人中心、学生管理、学院负责人管理、学校负责人管理、奖学金类型管理、奖学金申请管理、申请提交管理、系统管理等信息 学院负责人:学院负责人登录系统后&am…

14年电赛题--风洞实验--基于STM32与串口屏

前言&#xff1a; 经过三天两夜的比赛&#xff0c;最终我们还是取得了不错的成绩&#xff0c;只有第4问出了一点点问题&#xff0c;球没吹到最顶端。当时我们以为这个是最简单的问题&#xff0c;只要目标值给大点就没问题。但最终还是败在了这一问上&#xff0c;电压不够没吹到…

[已解决]react打包部署

react打包部署 问题 npm install 命令无反应 思路 换成 yarn install 安装完hadoop的环境后&#xff0c;使用node的yarn会报错&#xff1a; 我们在cmd使用where yarn&#xff0c;如下&#xff1a; 看你想保留哪一个&#xff0c;我平时node用的多&#xff0c;就把hadoop的y…

JavaEE 初阶篇-深入了解 I/O 流(FileInputStream 与 FileOutputStream 、Reader 与 Writer)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 I/O 流概述 2.0 文件字节输入流(FileInputStream) 2.1 创建 FileInputStream 对象 2.2 读取数据 2.3 关闭流 3.0 文件字节输出流(FileOutputStream) 3.1 创建 Fi…

代码随想录第42天|416. 分割等和子集

416. 分割等和子集 416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 动态规划之背包问题&#xff0c;这个包能装满吗&#xff1f;| LeetCode&#xff1a;416.分割等和子集_哔哩哔哩_bilibili 给你一个 只包含正整数 的 非空 数组…

知识加油站:数字阅览室全天候满足师生阅读需求

在知识经济时代&#xff0c;阅读已成为获取信息、提升素养、拓宽视野的重要途径。但在传统知识的海洋里&#xff0c;每一本书都是一座孤岛&#xff0c;每一个思想是一股潮流。传统的纸质阅读已经无法完全满足现代人快速、便捷、多样化的学习和阅读需求。因此&#xff0c;数字阅…

C++ 右值引用

1.左值引用和右值引用的概念 什么是左值&#xff1f;什么是左值引用&#xff1f; 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff0c;我们可以获取它的地址可以对它赋值&#xff0c;左值可以出现赋值符号的左边&#xff0c;右值不能出现在赋值符号左边。定义时co…

查看上一次错误的方法$err,hr,到底是什么意思

在《windows核心编程》或者《windows via C/C》一书中&#xff0c;提到过查看函数错误的方法&#xff0c;可以在watch窗口中输入"$err,hr"&#xff0c;来显示。比如下面一个程序 #include <Windows.h> int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_op…

FPGA - ZYNQ Cache一致性问题

什么是Cache&#xff1f; Cache是一种用来提高计算机运行速度的一种技术。它是一种小而快的存储设备&#xff0c;位于CPU与内存之间&#xff0c;用于平衡高速设备与低速设备之间的速度差异。Cache可以存储常用的数据或指令&#xff0c;以便CPU更快地获取&#xff0c;从而减少对…

基于肿瘤相关成纤维细胞的前列腺癌患者分层研究(多组学)

Integrating single-cell and bulk RNA sequencing data unveils antigen presentation and process-related CAFS and establishes a predictive signature in prostate cancer https://pubmed.ncbi.nlm.nih.gov/38221616/#full-view-affiliation-3 文章思路学习&#xff1a…

YOLOv9改进策略 | SPPF篇 | 利用RT-DETR的AIFI模块替换SPPFELAN助力小目标检测涨点

一、本文介绍 本文给大家带来是用最新的RT-DETR模型中的AIFI模块来替换YOLOv9中的SPPFELAN。RT-DETR号称是打败YOLO的检测模型&#xff0c;其作为一种基于Transformer的检测方法&#xff0c;相较于传统的基于卷积的检测方法&#xff0c;提供了更为全面和深入的特征理解&#x…

如何30天快速掌握键盘盲打

失业后在家备考公务员&#xff0c;发现了自己不正确的打字方式&#xff0c;决定每天抽出一点时间练习打字。在抖音上看到一些高手的飞速盲打键盘后&#xff0c;觉得使用正确的指法打字是很必要的。 练习打字&#xff0c;掌握正确的键盘指法十分关键。 练习打字的第一步是找到…

基本的SELECT语句及DESC显示表结构

1. SELECT ... 例 : 2. SELECT ... FROM ... (1). SELECT ... : 标识选择哪些列. (2). FROM ... : 标识从哪个表中选取. (3). *通配符 : 选择表中全部列. 例 : 3.列的别名 (1). 空一格. (2). 在列和别名间加入关键字AS. (3). 别名可以使用双引号&#xff0c;以便于在…

【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

文章目录 1. 什么是大模型2. 检索增强生成 RAG一、什么是 RAG二、RAG 的工作流程 3. langChain介绍一、什么是 LangChain二、LangChain 的核心组件 4. 开发 LLM 应用的整体流程一、何为大模型开发二、大模型开发的一般流程三、搭建 LLM 项目的流程简析&#xff08;以知识库助手…

从迷宫问题理解dfs

文章目录 迷宫问题打印路径1思路定义一个结构体要保存所走的路径&#xff0c;就需要使用到栈遍历所有的可能性核心代码 部分函数递归图源代码 迷宫问题返回最短路径这里的思想同上面类似。源代码 迷宫问题打印路径1 定义一个二维数组 N*M &#xff0c;如 5 5 数组下所示&…