团购——前端练习题

题目

描述

有 x个人打算买 A 类商品,有 y个人打算买 B 类商品,z个人打算买 C 类商品,每个人都只打算买 1 件商品。
现在有一个团购规则,规则如下:

  1. 每次团购规定买 3 件商品。
  2. 每次团购至少包括 1 件 A 类商品和 1 件 B 类商品。

请求出这些人最多团购多少次。

题意分析

解题思路

对于这个团购规则,一共有两个限制:

  1. 每次团购要买三件商品,只考虑这个条件,至多买 (x + y + z) / 3​ 件商品。
  2. 每次团购至少包括 1 件 A 类商品和 1 件 B 类商品。至多买 min(x, y) 件商品。

本题要同时满足这两个性质,那么对于这两个限制取最小值就是最终最多的团购次数,不可能有更大的结果。

复杂度分析

时间复杂度

  • 时间复杂度为O(1)

空间复杂度

  • 空间复杂度为O(1)

JavaScript代码 :

export class Solution {
  /**
   * @param x: the number of people who plan to buy goods A.
   * @param y: the number of people who plan to buy goods B.
   * @param z: the number of people who plan to buy goods C.
   * @return: return the maximum times they can group buy.
   */
  groupBuyTimes(x, y, z) {
    // write your code here
    // 购买的总和
    let a = Math.floor((x+y+z)/3);
    // 取x和y的最值,A商品和B商品是必须有的,那么x,y的最小值会限制次数
    let b = Math.min(x, y);
    return Math.min(a, b);
  }
}

运用的JavaScript  Math 对象中的知识点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面相进程,面相对象

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值