算法训练Day35|860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

简介: 算法训练Day35|860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

LeetCode:860.柠檬水找零

860. 柠檬水找零 - 力扣(LeetCode)

1.思路

通过map做映射,记录5,10出现的次数,然后罗列5、10、20出现时对map中元素数量的影响,排除所有不符合条件的,最后符合条件的返回true.

2.代码实现

 1class Solution {
 2    public boolean lemonadeChange(int[] bills) {
 3        // 映射
 4        Map<Integer, Integer> map = new HashMap<>(); 
 5        map.put(5, 0);
 6        map.put(10, 0);
 7        for (int i = 0; i < bills.length; i++) {
 8            if (bills[i] == 5) {
 9                map.put(5, map.get(5) + 1);
10            } else if (bills[i] == 10) {
11                if (map.get(5) > 0) {
12                    map.put(5, map.get(5) - 1);
13                    map.put(10, map.get(10) + 1);
14                } else {
15                    return false;
16                }
17            } else if (bills[i] == 20){
18                if (map.get(5) > 0 && map.get(10) > 0) {
19                    map.put(5, map.get(5) - 1);
20                    map.put(10, map.get(10) - 1);
21                } else if (map.get(5) >= 3){
22                    map.put(5, map.get(5) - 3);
23                } else {
24                    return false;
25                }
26            }
27        }
28        return true;
29    }
30}

3.复杂度分析

时间复杂度:O(n).

空间复杂度:O(1).


LeetCode:406.根据身高重建队列

406. 根据身高重建队列 - 力扣(LeetCode)


1.思路

先判断身高,从高到低排列,对于相同身高按照k值从低到高排列。

方法不熟悉,调用还挺难的…


2.代码实现

 1class Solution {
 2    public int[][] reconstructQueue(int[][] people) {
 3        Arrays.sort(people, (a, b) -> a[0] == b[0] ? a[1] - b[1] : b[0] - a[0]);
 4
 5        List<int[]> list = new ArrayList<>();
 6
 7        for (int i = 0; i < people.length; i++) {
 8            int[] person = people[i];
 9            list.add(person[1], person);
10        }
11        return list.toArray(new int[people.length][]);
12    }
13}

3.复杂度分析

时间复杂度:O(n^2).

空间复杂度:O(n).

LeetCode:452. 用最少数量的箭引爆气球

452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

1.思路

对齐左边界,更新右边界,思路清晰,方法调用较弱

2.代码实现

 1class Solution {
 2    public int findMinArrowShots(int[][] points) {
 3        Arrays.sort(points, (a, b) -> Integer.compare(a[0] , b[0]));
 4
 5        int count = 1;
 6        for (int i = 1; i < points.length; i++) {
 7            if (points[i][0] > points[i - 1][1]) {
 8                count++;
 9            } else {
10                points[i][1] = Math.min(points[i - 1][1], points[i][1]);
11            }
12        }
13        return count;
14    }
15}

3.复杂度分析

时间复杂度:O(logn).

空间复杂度:O(1).

4.视频解析

贪心算法,判断重叠区间问题 | LeetCode:452.用最少数量的箭引爆气球_哔哩哔哩_bilibili

相关文章
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
60 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
20天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
21天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
1月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
21 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
1月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
|
2月前
|
存储 算法 前端开发
深入理解操作系统:进程调度与优先级队列算法
【9月更文挑战第25天】在操作系统的复杂世界中,进程调度是维持系统稳定运行的核心机制之一。本文将深入探讨进程调度的基本概念,分析不同的进程调度算法,并着重介绍优先级队列算法的原理和实现。通过简洁明了的语言,我们将一起探索如何优化进程调度,提高操作系统的效率和响应速度。无论你是计算机科学的初学者还是希望深化理解的专业人士,这篇文章都将为你提供有价值的见解。
|
1月前
|
算法 C++
蓝桥 算法训练 共线(C++)
蓝桥 算法训练 共线(C++)
|
3月前
|
缓存 算法 Java
刷算法,你应该知道的队列经典应用
文章介绍了队列的基本特性和经典应用,包括如何用队列实现栈、使用优先级队列解决Top K问题,并通过LeetCode题目示例展示了队列在算法实现中的应用。
刷算法,你应该知道的队列经典应用
|
3月前
|
算法 搜索推荐
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较