题目:

思考:
1.先用大顶堆存放所有可以发放的优惠券;
2.为了保证期望发放的优惠券张数最少,需要从大到小遍历,所以使用大顶堆一次弹出券的面额。
3.每次遇到可以发放的券,则存到小顶端中,便于后续结果按照从小到大的顺序返回,且N减去所选券的面额。

代码实现:

import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;public class salesNums {public static void main(String[] args) {int[] arr= {1,2,5,10,20,50};List<Integer> salesNum = getSalesNum(arr, 75);System.out.println(salesNum);}public static List<Integer> getSalesNum (int[] arr, int sum) {PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>((o1, o2) -> o2 - o1);for (int num : arr) {maxHeap.add(num);}PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>();while (sum > 0) {int tmp = maxHeap.poll();if (tmp <= sum) {sum -= tmp;minHeap.add(tmp);}}List<Integer> ans = new ArrayList<>();while (!minHeap.isEmpty()) {ans.add(minHeap.poll());}return ans;}
}

用优先队列实现发放优惠券的算法逻辑相关推荐

  1. 全网最佳优惠券使用算法

    每逢过节网上购物,不论哪个平台都会发放很对优惠券,如何在结账时最合理的使用已有的优惠券平台是不会告诉你的,作为程序员的我们写一套算法得到最优使用方法是一件很有趣的事,关键是目前全网好像没有比较靠谱的答 ...

  2. 餐饮APP发放优惠券需求文档

    餐饮APP发放优惠券需求文档 目录 一.项目背景 二.需求分析 2.1竞品功能调研 2.2 用户-场景-遇到的问题-解决方法 三.本次需求得目的及功能列表 3.1将用户需求转化为产品需求 3.2整理成 ...

  3. Machine Learning | (4) Scikit-learn的分类器算法-逻辑回归

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  4. 使用聚类算法(Kmeans)进行数据降维并作为分类算法逻辑回归(logistic Regression)的数据预处理步骤实战

    使用聚类算法(Kmeans)进行数据降维并作为分类算法逻辑回归(logistic Regression)的数据预处理步骤实战 目录

  5. 游戏中的AI及实用算法逻辑

    这篇文章就不加具体的项目代码了,毕竟"敲代码是只是在一栋大楼设计好后具体的搬砖工作",程序猿贵在对这张图纸的设计好坏.再者这个话题我这车开的还不够稳,讲多了就翻车了.所以就跟大家分 ...

  6. 武汉新时标文化传媒有限公司抖音电商的算法逻辑

    我们想要在抖音上做好电商,只有理解了游戏规则以后,才有可能利用游戏的规则,顺势而为. 所以掌握抖音电商的算法逻辑,才是玩好这场游戏最底层最本质的东西.那到底如何理解这套机制? 一.权重决定推流的&qu ...

  7. 向无所不能逼近的算法 逻辑与算法之一

    向无所不能逼近的算法  逻辑与算法之一 了不起的算法 1840年代,英国数学家巴贝奇弄出了计算机的雏形,那只是机器或者叫计算机的硬件.这当然很重要,但更重要的一个发明则属于英国女数学家艾达,这位绝代女 ...

  8. 计算机逻辑算法,算法逻辑

    算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题.一般算法有顺序结构.选择结构.循环结构三种基本逻辑结 ...

  9. 淘宝店如何发放优惠券?

    商家们都很头疼,淘宝店怎么开.很多顾客在下单以后都没有进行付款,商家们这时候就会绞尽脑汁的想着如何去催顾客进行付款.其实各位商家可以利用网店优惠券来引导顾客付款.但是很多商家都不知道优惠券操作流程是什 ...

最新文章

  1. mysql默认无密码的问题
  2. 微服务架构下,解决数据一致性问题的实践 2
  3. C++ reference很全面
  4. 凯撒密码加密算法python_Python最新暴力破解WiFi,攻破所有密码限制,最强破解!...
  5. Moto One Pro渲染图曝光:潮流“浴霸”四摄加持
  6. 小技巧 ----- 枚举整数的每一位数字
  7. [面试] C/C++ 语法(二)—— 二维数组
  8. sql获取服务器系统时间,SQL Server取系统当前时间
  9. 思科CCNP培训中OSPF协议之详细图解-IELAB
  10. 软件外包平台列表(转载-知乎网)
  11. 贴片发光二极管/LED灯正负极判断
  12. mysql的sid_修改数据库的SID
  13. FIRST集合、FOLLOW集合以及LL(1)文法
  14. 【C语言】详解 calloc 函数用法
  15. 麦客表单无法登录打开显示空白怎么办?
  16. 2022年第十七届研电赛报名|安谋科技(Arm China)命题:基于特定开发平台的理性智能体设计
  17. 计算机安全模式win7,安全模式启动,教您Win7怎么进入安全模式
  18. 史上最全的用Python操控手机APP攻略!建议收藏!
  19. 进入BeOS的花花世界 系列七
  20. 车位地磁检测器产品选型指导(干货!)

热门文章

  1. 中朝生意经,去朝鲜捞一把!
  2. signature生成算法
  3. java模拟加速匀速减速_Android学习之 动画加速减速 匀速控制
  4. 头条竞价php下单系统源码_php竞价页订单管理系统(caozha-order ) v1.7.7
  5. FastDFS介绍及安装教程
  6. PTA-圆形体积计算器
  7. 【nano系列】jetson nano 迁移系统、制作SD卡启动扩展内存(二)
  8. 剧院系统界面之管理员界面
  9. VScode设置vim自定义按键映射
  10. 【微信】微信获取TOKEN,以及储存TOKEN方法