【力扣每日一题】LeetCode 2412: 完成所有交易的初始最少钱数

LeetCode 2412: 完成所有交易的初始最少钱数

题目解析

问题描述

给定一个二维数组 transactions,每个元素 transactions[i] = [costi, cashbacki] 表示一个交易。对于每笔交易,要求你完成该交易时有足够的初始资金 money,并且交易会减少或增加你账户中的资金。具体地,交易的费用为 costi,交易后的现金返还为 cashbacki。执行交易后,money 会变成 money - costi + cashbacki

你的目标是找到完成所有交易所需的最少初始资金 money,确保你在任意顺序下都能完成所有交易。

示例

示例 1
输入:

transactions = [[2,1], [5,0], [4,2]]

输出:

10

解释:
若初始资金为 10,那么无论以何种顺序执行交易,都能成功完成所有交易。

示例 2
输入:

transactions = [[3,0], [0,3]]

输出:

3

解释:
若初始资金为 3,无论以何种顺序执行交易,都能完成所有交易。具体地,执行顺序为 [[3,0], [0,3]] 时,资金为 3,完成所有交易。

提示

  • 1 <= transactions.length <= 10^5
  • transactions[i].length == 2
  • 0 <= costi, cashbacki <= 10^9

思路分析

分析问题

本题的关键在于找出一个足够的初始资金 money,使得无论交易顺序如何,都能够完成所有交易。我们可以将问题分为两部分来分析:

  1. 资金不足部分:对于每笔交易,money 需要保证至少能支付 costi。因此,在每笔交易中,若 costi > cashbacki,则至少需要支付 costi - cashbacki 的差额,这部分差额累计起来即为必须的最小资金。

  2. 最小起始资金:对于每一笔交易,它可能会有一部分“返还资金”(即 cashbacki)。对于完成某些交易,cashbacki 可以帮助你减轻初始资金的压力。我们需要找出一个最合适的初始资金,使得所有交易都能顺利进行。

解题思路

  1. 首先计算每笔交易的资金缺口:对于每笔交易 i = [costi, cashbacki],我们需要额外的资金 max(0, costi - cashbacki) 才能顺利完成该交易。

  2. 找到最大需要的初始资金:通过找出所有交易中的最小金额 min(costi, cashbacki),这个值表示为了完成所有交易,你在最初时刻可能需要的最大额外资金。

  3. 返回结果:最终的初始资金应该是上面两者的总和。

具体实现

from typing import Listclass Solution:def minimumMoney(self, transactions: List[List[int]]) -> int:# total 为所有交易的资金缺口total = 0# mx 为所有交易中最小的 costi 和 cashbacki 的差额mx = 0# 遍历每一笔交易for cost, cashback in transactions:# 累加每笔交易的资金缺口total += max(0, cost - cashback)# 找到最大需要的起始资金mx = max(mx, min(cost, cashback))# 最终的初始资金 = 所有交易的资金缺口 + 最大需要的起始资金return total + mx

代码解析

  • total:累加所有交易中必须先支付的资金缺口(即 max(0, cost - cashback))。这表示即使你按照最优顺序进行交易,至少也需要这么多资金才能顺利完成所有交易。

  • mx:计算所有交易中的最大 min(costi, cashbacki),这代表了为了保证所有交易顺利完成,在最开始时可能需要的额外资金。

最终返回的结果是 total + mx,即所有交易的资金缺口和最大额外资金的和。


复杂度分析

  • 时间复杂度
    遍历一次 transactions 数组,每次操作常数时间,因此时间复杂度是 O(n),其中 ntransactions 的长度。

  • 空间复杂度
    使用了常数空间来存储一些变量,因此空间复杂度是 O(1)。


总结

通过这个问题,我们可以学习到如何通过分解交易中的不同部分来分析最小初始资金。理解了如何计算资金缺口和最小需要的额外资金后,可以高效地得出最少初始资金。这个方法适用于交易顺序不确定的情况下,保证无论如何都能顺利完成所有交易。

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

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

相关文章

【GStreamer】GstAllocator的简单分析

目录 1.GstAllocator1.1 查找分配器&#xff08;gst_allocator_find&#xff09;1.2 初始化分配器&#xff08;gst_allocator_init&#xff09;1.2.1 通用初始化&#xff08;gst_allocator_init&#xff09;1.2.2 sysmem初始化&#xff08;gst_allocator_sysmem_init&#xff0…

Angular 2 表单深度解析

Angular 2 表单深度解析 引言 Angular 2作为现代前端开发的框架之一,以其灵活性和强大的功能赢得了众多开发者的青睐。在Angular 2中,表单处理是其中一个重要且复杂的部分。本文将深入解析Angular 2的表单,从基础知识到高级应用,旨在帮助开发者更好地理解和运用Angular 2…

STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态

STM32W5500以太网应用开发003_TCP服务器添加OLED&#xff08;u8g2&#xff09;显示状态 实验效果3-TCP服务器OLED1 拷贝显示驱动代码1.1 拷贝源代码1.2 将源代码添加到工程1.3 修改代码优化等级1.4 添加头文件路径1.5 修改STM32CubeMX工程 2 修改源代码2.1 添加头文件2.2 main函…

MySQL命令及用法(精华版)

目录 DDL&#xff08;数据定义语言&#xff09; 数据库操作 表操作 DML&#xff08;数据操作语言&#xff09; DQL&#xff08;数据查询语言&#xff09; 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL&#xff08;数据控制语言&#xff09; 用户…

postgresql根据主键ID字段分批删除表数据

生产环境针对大表的处理相对比较麻烦。 方案1、直接truncate&#xff0c;可能会遇到系统卡主的情况&#xff0c;因为truncate的过程中会对表进行加锁&#xff0c;会导致数据不能正常的写入 方案2、创建一个同结构的表结构&#xff0c;rename旧表&#xff0c;不停业务rename表担…

基于微信小程序的英语学习交流平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

前言 ORB-SLAM2源码学习&#xff1a;Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点&#xff0c;但是经过三角化成功的三维点并不一定是有效的&#xff0c;需要筛选才能作为初始化地图点。 …

macOS如何进入 Application Support 目录(cd: string not in pwd: Application)

错误信息 cd: string not in pwd: Application 表示在当前目录下找不到名为 Application Support 的目录。可能的原因如下&#xff1a; 拼写错误或路径错误&#xff1a;确保你输入的目录名称正确。目录名称是区分大小写的&#xff0c;因此请确保使用正确的大小写。正确的目录名…

记录一个连不上docker中的mysql的问题

引言 使用的debian12,不同发行版可能有些许差异&#xff0c;连接使用的工具是navicat lite 本来是毫无思绪的&#xff0c;以前在云服务器上可能是防火墙的问题&#xff0c;但是这个桌面环境我压根没有使用防火墙。 直到 ying192:~$ mysql -h127.0.0.1 -uroot ERROR 1045 (28…

Gradle自定义任务指南 —— 释放构建脚本的无限可能

文章目录 &#x1f50d;Gradle任务⚙️ 自定义任务的5大核心配置项1. 任务注册&#xff08;Registering Tasks&#xff09;2. group & description3. dependsOn4. inputs & outputs5. 类型化任务&#xff08;Task Types&#xff09; 任务常见配置参数传递方式1&#xf…

【FISCO BCOS】二十四、通过Java SDK对FISCO BCOS进行压力测试

Java SDK Demo是基于Java SDK的基准测试集合,能够对FISCO BCOS节点进行压力测试。Java SDK Demo提供有合约编译功能,能够将Solidity合约文件转换成Java合约文件,此外还提供了针对转账合约、CRUD合约以及AMOP功能的压力测试示例程序。本篇我们来讲讲使用java SDK压力测试的操…

windows11关闭系统更新详细操作步骤

文章目录 1.打开注册表2.修改注册表内容2.1 新建文件2.2 修改值 3.修改设置 1.打开注册表 winR输入regedit(如下图所示) 2.修改注册表内容 进HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 2.1 新建文件 右侧界面右键即可 2.2 修改值 重命名为如下…

matlab绘图——彩色螺旋图

代码生成的图形是一个动态的彩色螺旋&#xff0c;展示了如何利用极坐标和颜色映射创建视觉吸引力强的图形。该图形可以用于数据可视化、艺术创作或数学演示&#xff0c;展示了 MATLAB 在图形处理方面的强大能力。通过调整 theta 和 r 的范围&#xff0c;可以创建出不同形状和复…

啥是EPS?

文章目录 1. 什么是EPS?2. 主要构成3. EPS的设计如何符合功能安全?4. 代表性的厂家1. 什么是EPS? EPS(Electric Power Steering,电动助力转向系统)是一种利用电动机提供转向助力的系统,取代了传统的液压助力转向系统(HPS)。EPS通过传感器检测驾驶员的转向意图,并由电…

QT:控件属性及常用控件(3)-----输入类控件(正则表达式)

输入类控件既可以进行显示&#xff0c;也能让用户输入一些内容&#xff01; 文章目录 1.Line Edit1.1 用户输入个人信息1.2 基于正则表达式的文本限制1.3 验证两次输入的密码是否一致1.4 让输入的密码可以被查看 2.Text Edit2.1 输入和显示同步2.1 其他信号出发情况 3.ComboBox…

MyBatis 写法

MyBatis 高效使用技巧 常见 MyBatis 使用技巧&#xff0c;这些技巧有助于简化数据库操作&#xff0c;提高开发效率&#xff0c;并增强系统的性能。 1. 动态 SQL 动态 SQL 让开发者能够依据参数灵活地构建 SQL 语句&#xff0c;避免了手动拼接字符串带来的复杂性和错误风险。…

24_游戏启动逻辑梳理总结

首先这个项目从游戏根入口GameRoot.cs的初始化开始 分为 服务层初始化Svc.cs 与 业务系统层初始化Sys.cs 而服务层 分为 资源加载服务层ResSvc.cs 与 音乐播放服务层AudioSvc.cs 而在 资源加载服务层ResSvc.cs中 初始化了 名字的 配置文件 而音乐播放服务层AudioSvc.cs 暂时没…

【25考研】中科院软件考研复试难度分析!

中科院软件复试不需要上机&#xff01;且对专业综合能力要求较高&#xff01;提醒同学一定要认真复习&#xff01; 一、复试内容 二、参考书目 官方并未明确给出&#xff0c;建议同学参考初试书目&#xff1a; 1&#xff09;《数据结构&#xff08;C语言版&#xff09;》严蔚…

Kafka生产者ACK参数与同步复制

目录 生产者的ACK参数 ack等于0 ack等于1&#xff08;默认&#xff09; ack等于-1或all Kafka的同步复制 使用误区 生产者的ACK参数 Kafka的ack机制可以保证生产者发送的消息被broker接收成功。 Kafka producer有三种ack机制 &#xff0c;分别是 0&#xff0c;1&#xf…

大华相机DH-IPC-HFW3237M支持的ONVIF协议

使用libONVIF C库。 先发现相机。 配置 lib目录 包含 编译提示缺的文件&#xff0c;到libonvif里面拷贝过来。 改UDP端口 代码 使用msvc 2022的向导生成空项目&#xff0c;从项目的main示例拷贝过来。 CameraOnvif.h #pragma once#include <QObject> #include &l…