LCP 06. 拿硬币【向上取整】

news2024/9/30 21:29:55

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:贪心
  • 知识回顾
    • 向上、向下取整
  • 写在最后

Tag

【贪心】【数组】


题目来源

LCP 06. 拿硬币


题目解读

数组 coins 中存放的是一堆堆的力扣币,对于每一堆力扣币,你可以选择拿走一枚或者两枚,请返回拿走所有乐扣币的最少次数。


解题思路

方法一:贪心

我们利用贪心的思想来解决。

题目意思明确,对于每一堆的力扣币我们可以拿一枚也可以拿两枚,对于每一堆我们能拿两枚就拿两枚,不能拿两枚我们就拿一枚,这样拿完这一堆的力扣币次数最少,我们对每一堆拿取的次数最少(局部最优)促成了拿完所有力扣币的最少次数(全局最优)。

具体地,我们对 2 取上整,即可实现贪心策略。

ab 取下整可以这样实现: ⌊ a b ⌋ = a / b \lfloor \frac{a}{b} \rfloor = a / b ba=a/bab 取上整可以这样实现: ⌈ a b ⌉ = ( a + b − 1 ) / b = ( b − 1 ) / a + 1 \lceil \frac{a}{b} \rceil = (a + b - 1) / b = (b - 1) / a + 1 ba=(a+b1)/b=(b1)/a+1

实现代码


复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为数组 coins 的长度。

空间复杂度: O ( 1 ) O(1) O(1)

知识回顾

向上、向下取整

除了以上介绍的两种向上、向下取整方式之外,还有一些其他方法可以进行向上、向下取整。

需要强调的是向上、向下取整是对于浮点类型的取整,或者运算过程中出现的浮点类型取整。

x 向上取整是返回大于等于 x 的最小整数,用 ⌈ x ⌉ \lceil x \rceil x 表示,比如 ⌈ 2.3 ⌉ = 3 \lceil 2.3 \rceil = 3 2.3=3。计算方法有 ceil(x),需要注意的是 ceil(x) 返回的是 double 类型、float 类型或者 long double 类型,具体的返回值类型适 x 的类型而定,使用完毕后还需要强转为整型数据。

x 向下取整是返回小于等于 x 的最大整数,用 ⌊ x ⌋ \lfloor x \rfloor x 表示,比如 ⌊ 2.3 ⌋ = 2 \lfloor 2.3 \rfloor = 2 2.3=2。计算方法有 floor(x), floor(x) 返回的也是 double 类型、float 类型或者 long double 类型,具体的返回值类型适 x 的类型而定,使用完毕后还需要强转为整型数据。

x 向下取整操作还可以直接使用 int 类型进行强转,比如 ⌊ 3.7 ⌋ = ( i n t ) 3.7 = 3 \lfloor 3.7 \rfloor = (int)3.7 = 3 3.7=(int)3.7=3

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

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

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

相关文章

SOCKS5 认证的方法

在进行网络浏览或爬虫等相关工作时,我们经常会遇到需要使用 SOCKS5 代理认证的情况。然而,某些浏览器可能不提供原生支持 SOCKS5 代理认证的选项,给我们带来了一些困扰。本文将为大家介绍几种解决浏览器不支持 SOCKS5 代理认证问题的方法。 …

java图形化工具编写初试

java图形化工具编写初试 前言: 照虎画猫——用WgpSec 说书人师傅的‘用友NC系列检测利用工具’结合本人为数不多的java基础再结合gpt,学习了一下java图形化工具的编写,实现了最基础的漏洞检测功能........用大华的两个漏洞为例,分…

kafka消费/发送消息,消息过大报错解决whose size is larger than the fetch size 1048576

目录 一、kafka消费报错原因二、解决方案1、原因一的解决方案2、原因二的解决方案 一、kafka消费报错原因 问题原因一:个是kafka本身的配置没有调整到上限 问题原因二:就是我们自己写python消费kafka代码的时候没有参数配置没有限制 RecordTooLargeE…

实践分享:vue模块化基本用法

首先还是来看看什么是模块化。 常见的概括:模块化就是把单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成员,也可以依赖别的模块(方便代码的重用&…

Zotero配合dblp文献库免费一键下载文献及管理教程

Zotero配合dblp文献库免费一键下载文献及管理教程 1 dblp计算机科学文献库2 文献导入到Zotero教程参考: 在这里,相信大家都已经知道Zotero这个强大的文献管理软件了,它可以多端同步,自动下载文献,自定义标签&#xff0…

数据结构——排序算法——归并排序

将两个有序数组合并为一个有序数组 在第二个列表向第一个列表逐个插入的过程中,由于第二个列表已经有序,所以后续插入的元素一定不会在前面插入的元素之前。在逐个插入的过程中,每次插入时,只需要从上次插入的位置开始&#xff0…

Pytorch从零开始实战04

Pytorch从零开始实战——猴痘病识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——猴痘病识别环境准备数据集模型选择模型训练数据可视化其他模型图片预测 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytor…

mysql用事务实现更新数据

前言:在手动批量更新正式环境数据库时,建议使用事物进行更新,避免更错数据,造成不必要的麻烦。 现表中有三条数据,使用事物批量将name字段为mgx,phone字段为17837107346,所有数据中的address字段…

华为云云耀云服务器L实例评测|服务器反挖矿防护指南

前言 本文为华为云云耀云服务器L实例测评文章,测评内容是 云耀云服务器L实例 反挖矿防护指南 系统配置:2核2G 3M CentOS7.9 之前的文章中『一文教你如何防御数据库恶意攻击』,我们讲到黑客如何通过攻击数据库来获取权限,以及我们…

别再纠结线程池池大小、线程数量了,哪有什么固定公式 | 京东云技术团队

可能很多人都看到过一个线程数设置的理论: CPU 密集型的程序 - 核心数 1 I/O 密集型的程序 - 核心数 * 2 不会吧,不会吧,真的有人按照这个理论规划线程数? 线程数和CPU利用率的小测试 抛开一些操作系统,计算机原…

C++数据结构X篇_14_二叉树的递归遍历(先序遍历、中序遍历、后续遍历方法介绍;举例;代码实现)

我们知道数据的存储结构分为线性与非线性。线性就是1对1的结构,像栈与队列都属于线性结构。那什么是非线性的结构呢? 非线性即1对n的结构这更符合常规情况,线性结构本质上属于非线性结构中的一种特殊形式,像树就属于非线性结构。但…

iOS 17 Simulator Failed with HTTP status 400:bad request

升级 xcode 15 要 ios17 的 sdk 才能运行,但是更新这个 sdk 400 错误了 解决方案: 直接去官网下载开发者后台下载dmg文件,使用命令行快速安装即可 https://developer.apple.com/documentation/xcode/installing-additional-simulator-runti…

Anaconda和Pycharm详细安装 配置教程

Anaconda:是一个开源的Python发行版本,其中包含了conda、Python等180多个科学包及其依赖项。【Anaconda下载】 PyCharm:PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。【PyCharm下载】…

功能强大的PostgreSQL没有MySQL流行的10个原因,你知道几个?

以下内容是根据玖章算术CEO叶正盛在「3306π 数据库朋友圈」技术演讲整理。文末附完整的PPT下载链接! MySQL与PostgreSQL都是非常优秀并且非常成功的数据库,PostgreSQL的功能比MySQL强大,但是依然没有MySQL流行,作者从产品功能、…

Vue3中的computed函数详解

计算属性是Vue中常用的一种方式,主要用于在模板中放置逻辑计算,方便开发者进行数据操作和展示。在Vue3中,计算属性依然是非常重要的一种功能,而computed函数则更加的方便计算属性的使用。本文将对Vue3中的computed函数进行详细的介…

terraform简单的开始-vpc cvm创建

从网络开始 从创建VPC开始 复用前面的main.tf的代码: terraform {required_providers {tencentcloud {source "tencentcloudstack/tencentcloud"version "1.81.25"}} } variable "region" {description "腾讯云地域"…

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(二)

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(二) 上一次和大家分享了组态相关的重要内容,具体可以参考以下链接中的内容: 西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一) 本次继续和大家分享关于安全PLC基础编程的相关内容: 如下图所示,在左侧的…

开通经营收款码要手续费吗

我们都知道,目前市场上的支付宝或者微信商户收款,无论是线上收款还是实体店收款,一般都采用0.6%的收款费率,1万元就是60元。 其实这不低的。 大多数线下实体店商家可能使用的聚合支付码可能是0.38%,1万元是38。 虽然不…

21天学会C++:Day12----初始化列表

CSDN的uu们,大家好。这里是C入门的第十一讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 初始化列表 1.1 引入 1.2 初始化列表 1.3 初始化列表的注意事项 1.…

字符集(ASCII、GBK、Unicode、UTF-8)

1、字符集基础知识 计算机底层不可以直接存储字符的。计算机中底层只能存储二进制(0、1)二进制是可以转换成十进制的结论:计算机底层可以表示十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集。 2、ASCII字符…