代码随想录二刷day35 |贪心 之 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

news2024/11/15 9:41:38

day35

      • 860.柠檬水找零
      • 406.根据身高重建队列
      • 452. 用最少数量的箭引爆气球

860.柠檬水找零

题目链接
解题思路:
局部最优:遇到账单20,优先消耗美元10,完成本次找零。全局最优:完成全部账单的找零。
代码如下:

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        int five = 0, ten = 0, twenty = 0;
        for (int bill : bills) {
            // 情况一
            if (bill == 5) five++;
            // 情况二
            if (bill == 10) {
                if (five <= 0) return false;
                ten++;
                five--;
            }
            // 情况三
            if (bill == 20) {
                // 优先消耗10美元,因为5美元的找零用处更大,能多留着就多留着
                if (five > 0 && ten > 0) {
                    five--;
                    ten--;
                    twenty++; // 其实这行代码可以删了,因为记录20已经没有意义了,不会用20来找零
                } else if (five >= 3) {
                    five -= 3;
                    twenty++; // 同理,这行代码也可以删了
                } else return false;
            }
        }
        return true;
    }
};


406.根据身高重建队列

题目链接
解题思路
在这里插入图片描述如果按照k来从小到大排序,排完之后,会发现k的排列并不符合条件,身高也不符合条件,两个维度哪一个都没确定下来。

那么按照身高h来排序呢,身高一定是从大到小排(身高相同的话则k小的站前面),让高个子在前面。
此时我们可以确定一个维度了,就是身高,前面的节点一定都比本节点高!

局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性
全局最优:最后都做完插入操作,整个队列满足题目队列属性

C++代码如下:

// 版本一
class Solution {
public:
    static bool cmp(const vector<int>& a, const vector<int>& b) {
        if (a[0] == b[0]) return a[1] < b[1];
        return a[0] > b[0];
    }
    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
        sort (people.begin(), people.end(), cmp);
        vector<vector<int>> que;
        for (int i = 0; i < people.size(); i++) {
            int position = people[i][1];
            que.insert(que.begin() + position, people[i]);
        }
        return que;
    }
};

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

题目链接
解题思路
局部最优:当气球出现重叠,一起射,所用弓箭最少。全局最优:把所有气球射爆所用弓箭最少。
以题目示例: [[10,16],[2,8],[1,6],[7,12]]为例,如图:(方便起见,已经排序)
在这里插入图片描述可以看出首先第一组重叠气球,一定是需要一个箭,气球3,的左边界大于了 第一组重叠气球的最小右边界,所以再需要一支箭来射气球3了。

class Solution {
private:
    static bool cmp(const vector<int>& a, const vector<int>& b) {
        return a[0] < b[0];
    }
public:
    int findMinArrowShots(vector<vector<int>>& points) {
        if (points.size() == 0) return 0;
        sort(points.begin(), points.end(), cmp);

        int result = 1; // points 不为空至少需要一支箭
        for (int i = 1; i < points.size(); i++) {
            if (points[i][0] > points[i - 1][1]) {  // 气球i和气球i-1不挨着,注意这里不是>=
                result++; // 需要一支箭
            }
            else {  // 气球i和气球i-1挨着
                points[i][1] = min(points[i - 1][1], points[i][1]); // 更新重叠气球最小右边界
            }
        }
        return result;
    }
};

注:point[i][0]中的[0]表示起始位置

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

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

相关文章

NodeJS NVM版本管理⑩⑧

文章目录 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618;前言 N V M I n t r o d u c e NVM Introduce NVMIntroduce N V M U s e NVMUse NVMUse D o w n l o a d A n d I n s t a l l Download And Install Downloa…

DTC143ZM理解介绍(含电路应用)

前人种树&#xff0c;后人乘凉&#xff1b;创造不易&#xff0c;请勿迁移~ author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主daisy.skye擅长嵌入式,Qt,Linux,等方面的知识https://blog.csdn.net/qq_40715266?t…

C语言sin函数学习

函数名: sin 头文件&#xff1a;<math.h> 函数原型: double sin(double x); 功 能: 正弦函数 参 数&#xff1a; double x 操作的弧度 返回值&#xff1a; 返回弧度的正弦值 1π/180弧度 这是C标准库的定义&#xff1b; #include<stdio.h>#include<mat…

普乐蛙VR太空宇宙vr星际飞船设备模拟太空飞船

科技感十足!你有没有想过自己能够亲身体验到太空飞行的感觉?这一刻&#xff0c;梦想成真! 宇航员体验 VR科技让人类走进了未知领域&#xff0c;现在&#xff0c;你可以在舒适的空间内感受宇宙中的万千风景&#xff0c;体验宇航员的工作和生活。而这次VR科技体验馆更是为你准备…

uni-easyinput连续输入出现闪动解决

原因分析&#xff1a; 是因为uni-easyinput源码中&#xff0c;在输入触发事件中一直去同步modelValue&#xff0c;而modelValue其实就是双向绑定的值&#xff08;有一定延迟&#xff09;&#xff0c;当连续输入时&#xff0c;会导致input和modelValue不一致&#xff0c;就会出…

YOLOv8遇见VisDrone 2023目标检测挑战赛-YOLOv8实战VisDrone无人机目标检测(视频教程)

课程链接&#xff1a;https://edu.csdn.net/course/detail/38688 VisDrone 2023目标检测挑战赛( http://aiskyeye.com/challenge-2023/)和 ICCV 2023 顶会联合举行&#xff0c;用于检测从无人机获取的视觉数据中的物体。优胜者可出席 ICCV 2023 研讨会&#xff0c;并获得万元奖…

如何利用python做爬虫?

Python爬虫在许多情况下是非常有用的&#xff0c;爬虫可以帮助自动化地从互联网上获取大量数据。这些数据可以是产品信息、新闻文章、社交媒体内容、股票数据等通过爬虫可以减少人工收集和整理数据的工作量&#xff0c;提高效率。在软件开发中&#xff0c;可以使用爬虫来进行自…

为什么学习STM32相对困难?如何优化学习过程?

当你在学习STM32时感到困惑&#xff0c;可以考虑以下优化策略&#xff1a;理解基础概念&#xff1a;确保你对STM32的基础概念有清晰的理解&#xff0c;包括芯片架构、寄存器配置和外设功能等。通过仔细阅读官方文档、参考手册或教程&#xff0c;加深对这些概念的理解。我这里有…

Android Jetpack Compose之OutlinedButton的使用

Android Jetpack Compose是一个现代化的UI工具包&#xff0c;它让开发者可以更方便地构建出美观且功能强大的Android应用。本文将详细介绍其中的一个重要组件——OutlinedButton。 一. OutlinedButton简介 二. 如何使用OutlinedButton 三. 自定义OutlinedButton 四. Outlin…

两段代码共存于一个文件,编译时有选择的编译其中的一部分,有几种方法实现?如何实现?(笔试题)

两段代码共存于一个文件&#xff0c;编译时有选择的编译其中的一部分&#xff0c;请问有几种方法实现&#xff1f;如何实现&#xff1f; 1. 条件编译 使用预处理指令来控制代码的编译。通过在代码中添加条件编译指令&#xff0c;可以根据条件选择性地编译代码。条件编译指令通…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第八天 8/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

chatgpt赋能python:Python获取句柄的方法——在Windows平台上实现窗口控制

Python获取句柄的方法——在Windows平台上实现窗口控制 句柄&#xff08;Handle&#xff09;是Windows系统中非常重要的概念&#xff0c;它是一种指向资源对象的引用&#xff0c;以数字的形式来表示。在Windows上&#xff0c;所有资源对象都具有独特的句柄。窗口也是一种资源对…

【强化学习】常用算法之一 “Q-learning”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

学习Kotlin~变量

变量定义 声明变量 var maximumAge: Int 5;数据类型全部都是引用类型 var y1: String "Hello World";var y2: Char A;var y3: Boolean true;var y4: Int 5;var y5: Double 3.14;var和val 声明可修改使用var声明只读使用val&#xff0c;只读变量并非绝对只读 …

FOTA S32K

目的 OTA的概括和挑战 理解 NXP是如何在自己的产品处理线上更新 了解如何处理低成本边缘节点mcu(如S32K设备)中的空中更新 背景 一般车辆更新固件需要 在经销商完成更新指定使用更新固件的工具引擎并非在运动状态目标节点应用被暂停主应用程序被擦出和在编程 动机 不断增…

flutter Android 自定义输出路径 apk名称

默认 Flutter flutter build apk, 是默认的名字 默认的路径&#xff0c;直接修改输出路径 会造成 打包可以&#xff0c;直接运行 会提示找不到 apk 文件&#xff1b; 这里的解决思路是&#xff1a;打包完成后 拷贝目标路径的 APK 到自定义的路径&#xff0c;这样既可以正常打…

XILINX 4种7系列FPGA的特点与应用场景详解

&#x1f3e1;《Xilinx FPGA开发宝典》 目录 1&#xff0c;概述2&#xff0c;性能成本分析3&#xff0c;性能提升方法4&#xff0c;总结 1&#xff0c;概述 7系列FPGA包括Spartan-7&#xff0c;Artix-7&#xff0c;Kintex-7和Virtex-73类&#xff0c;分别简称为S7,A7,K7和V7。本…

【数据结构OJ题】移除链表元素

移除链表元素 原题链接&#xff1a;力扣 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回新的头节点 。 方法一&#xff1a;原地删除节点 思路&#xff1a; 首先&#xff0c;定义两个指针&#xff1…

minikube从入门到精通系列之一:部署minikube详细步骤

minikube从入门到精通系列之一&#xff1a;部署minikube详细步骤 一、认识Minikube二、Minikube核心知识点三、minikube官方地址四、minikube 启动五、minikube的配置需求六、Mac安装minikube七、CenotOS7上安装minikube八、启动集群九、与集群交互十、部署应用程序1.Service2.…

方向元件软件原理

三段方向电流保护的方向元件&#xff0c;可以由软压板选择正方向、反方向动作方式。这里仅以正方向为例来说明方向元件原理。 为了保证在各种相间短路故障时&#xff0c;方向元件能可靠而灵敏动作&#xff0c;微机保护的方向元件的“接线方式”&#xff08;指软件的接线方式&am…