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

Leecode刷题C语言之完成所有交易的初始最少钱数

执行结果:通过

执行用时和内存消耗如下:

 

 

 

long long minimumMoney(int** transactions, int transactionsSize,
                       int* transactionsColSize) {
    long long total_lose = 0;
    int res = 0;

    for (int i = 0; i < transactionsSize; i++) {
        int cost = transactions[i][0];
        int cashback = transactions[i][1];
        if (cost > cashback) {
            total_lose += (cost - cashback);
        }
        if (cashback < cost) {
            if (cashback > res) {
                res = cashback;
            }
        } else {
            if (cost > res) {
                res = cost;
            }
        }
    }
    return total_lose + res;
}

解题思路:

该代码的目的是计算一系列交易中的最小损失金额加上一个特定的返现金额或交易成本,具体思路如下:

  1. 初始化变量
    • total_lose:用于累加所有亏损的交易金额(即交易成本大于返现金额的部分)。
    • res:用于记录一个特定的值,初始化为0。这个值最终会是所有交易中最大的返现金额(如果返现金额小于成本)或者最大的交易成本(如果返现金额不小于成本)。
  2. 遍历交易
    • 通过一个循环遍历所有交易,每个交易由一个包含两个整数的数组表示,第一个整数是交易成本(cost),第二个整数是返现金额(cashback)。
  3. 计算亏损
    • 对于每一笔交易,如果交易成本大于返现金额(cost > cashback),则计算亏损金额(cost - cashback)并累加到total_lose中。
  4. 更新res的值
    • 如果返现金额小于交易成本(cashback < cost),则检查当前返现金额是否大于res,如果是,则更新res为当前返现金额。
    • 如果返现金额不小于交易成本(cashback >= cost),则检查当前交易成本是否大于res,如果是,则更新res为当前交易成本。
  5. 返回结果
    • 最终返回total_lose + res,即所有交易的亏损总额加上res记录的那个特定值。

逻辑分析

  • total_lose累计了所有“亏钱”的交易,即那些你支付的比返现更多的交易。
  • res记录了一个“参照值”,这个值在遍历所有交易后,会是以下两种情况中的最大值:
    • 所有返现金额中的最大值(如果返现金额小于交易成本)。
    • 所有交易成本中的最大值(如果返现金额不小于交易成本)。

用途

  • 该函数可能用于评估一系列交易的总损失(因支付超过返现而亏损的金额)加上一个“安全垫”(即最大的返现金额或交易成本,作为某种形式的准备金或基准参考)。

改进建议

  • 变量命名可以更直观一些,例如将res改为maxRefundOrCost可能会更清楚地表达其含义。
  • 注释的添加可以帮助其他开发者更快地理解代码的逻辑和目的。

http://www.kler.cn/a/519855.html

相关文章:

  • Rust 中的结构体使用指南
  • 積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程
  • 【矩阵二分】力扣378. 有序矩阵中第 K 小的元素
  • 10 Hyperledger Fabric 介绍
  • 个性化的语言模型构建思路
  • 洛谷 P5709:Apples Prologue / 苹果和虫子
  • 2025年前端技术革新趋势
  • Leetcode求职题目(21)
  • 适合 C# 开发者的 Semantic Kernel 入门:用 AI 赋能你的 .NET 应用
  • 【由浅入深认识Maven】第1部分 maven简介与核心概念
  • 回溯算法学习记录及习题集合
  • JavaScript常见面试问题解答
  • 代码随想录训练营第五十六天| 108.冗余连接 109.冗余连接II
  • 2024年蓝桥杯真题C/C++/java组部分真题解析(一)
  • 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)
  • mysql create table的用法
  • INCOSE需求编写指南-第 2 节:需求和要求陈述的特征
  • PD协议(Power Delivery)高效安全解决充电宝给笔记本供电
  • Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三)
  • javascript格式化对象数组:ES6的模板字符串、map