算法训练营day30,贪心算法4

import "sort"

// 860. 柠檬水找零

func lemonadeChange(bills []int) bool {

  //如果最开始就大于5元,肯定无法找零直接返回false

  if len(bills) > 0 && bills[0] > 5 {

    return false

  }

  five := 0

  ten := 0

  twenty := 0

  for i := 0; i < len(bills); i++ {

    //等于5元直接收下不用找零,five++

    if bills[i] == 5 {

      five++

    //如果是10元,且有5元可以找零

    } else if bills[i] == 10 && five > 0 {

      ten++

      five--

    } else if bills[i] == 20 && five > 0 {

      //如果是20元,可以找10元+5元或者3个五元,优先采用10+5方式

      if ten > 0 {

        twenty++

        ten--

        five--

      } else {

        if five < 3 {

          return false

        }

        five -= 3

      }

    //如果没有五元找零,直接返回false

    } else if five == 0 && (bills[i] == 10 || bills[i] == 20) {

      return false

    }

  }

  return true

}

//406. 根据身高重建队列

func reconstructQueue(people [][]int) [][]int {

  sort.Slice(people, func(i, j int) bool {

    if people[i][0] == people[j][0] { //如果身高相等则按照k从小到大排序

      return people[i][1] < people[j][1]

    }

    return people[i][0] > people[j][0] //身高由大到小排序

  })

  // 再按照K进行插入排序,优先插入K小的

  for i := 0; i < len(people); i++ {

    p := people[i]

    copy(people[p[1]+1:i+1], people[p[1]:i+1])

    people[p[1]] = p

  }

  return people

}

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

func findMinArrowShots(points [][]int) int {

  if len(points) == 0 {

    return 0

  }

  arrow := 1 //弓箭数量

  //按第一位从小到大排序

  sort.Slice(points, func(i, j int) bool {

    return points[i][0] < points[j][0]

  })

  for i := 1; i < len(points); i++ {

    //如果前一个右边界比当前左边界小说明无法一起射破,需要增加一支箭

    if points[i-1][1] < points[i][0] {

      arrow++

    } else {

      // 如果当前边界比之前边界大,则沿用之前边界

      if points[i][1] > points[i-1][1] {

        points[i][1] = points[i-1][1]

      }

    }

  }

  return arrow

}

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

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

相关文章

Python在金融大数据分析中的AI应用实战

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 随着人工智能时代的到来&#xff0c;Python作为…

Java入门教程:介绍、优势、发展历史以及Hello World程序示例

Java入门教学 java语言介绍 Java是由Sun Microsystems公司(已被Oracle公司收购)于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发&#xff0c;并在1995年正式推出。 Java分为三个体系&#xff1a; JavaSE&#xff08;J2SE&…

cyk追楠神系列三

cyk追楠神系列三 Description 众所周知&#xff0c;cyk给楠神写了一封信表白。作为有一个有礼貌的五好青年&#xff0c;楠神当然得给 cyk 写一封回信咯&#xff0c;俗称“好人信”。 楠神是一个非常有文采的人&#xff0c;他在信里引用了很多名言来安慰 cyk&#xff0c;有时候…

最长公共子序列和最长公共子串

最长公共子序列 题目描述 给出1,2,…,n 的两个排列P1 和 P2 &#xff0c;求它们的最长公共子序列。 输入格式 第一行是一个数 n。 接下来两行&#xff0c;每行为 n 个数&#xff0c;为自然数1,2,…,n 的一个排列。 输出格式 一个数&#xff0c;即最长公共子序列的长度。…

浅谈iPaaS对企业转型的重要性

面对数字化转型的大浪潮&#xff0c;众多企业都期望着能快速实现全面的数字化转型&#xff0c;让企业在日益激烈的竞争中拥有更稳的市场地位&#xff0c;提升自身的实力及能力&#xff0c;奠定更坚实的基底。但在数字化转型过程中&#xff0c;部分企业数字化基础水平较薄弱&…

Spring Boot注入PasswordEncoder失败

问题 以Autowired方式注入PasswordEncoder对登录密码进行校验&#xff0c;启动时报错如下 Description:Field userService in com.lyx.springboot.controller.UserController required a bean of type org.springframework.security.crypto.password.PasswordEncoder that co…

C语言:国家名称按字母表排序

题目描述 输入一个整数n(n<20)&#xff0c;表示待输入国家的数量。随后输入n个国家或地区的名称 (名称长度为1~30)&#xff0c;要求按字母顺序升序输出。 注意&#xff1a;名称中可能包含空格符。 提示 字符串比较请使用函数&#xff1a; int strcmp(const char* str1&a…

开源软件:推动软件行业繁荣的力量

文章目录 &#x1f4d1;引言开源软件的优势分析开放性与透明度低成本与灵活性创新与协作 开源软件对软件行业的影响推动技术创新和进步促进软件行业的合作与交流培养人才和提高技能促进软件行业的可持续发展 结语 &#x1f4d1;引言 随着信息技术的飞速发展&#xff0c;软件已经…

设计模式Python实现

过年在家瞎折腾&#xff0c;闲着无聊看到设计模式&#xff0c;于是就想着用Python实现一下。 简单工厂 根据传入的参数决定创建出哪一种产品类的实例。 class CashFactory:def createCashAdapter(self, type):if type "满100减20":return CashReturn(100, 20)elif…

Sora爆火,普通人的10个赚钱机会

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

Linux的命令简记

查看网络设置的命令是什么 Ifconfig 要想在PATH中添加命令要用到什么命令 PATH"$PATH":目录的绝对路径 复制文件的命令是什么 Cp 源文件 目标文件 cp命令怎么递归复制 Cp -r Cp命令怎么查询是否覆盖 Cp -i cp命令怎么把文件的权限也都复制过来 Cp -a 如果要复制目录要…

spring boot自动装配

第一步需要在pom.xml文件指定需要导入的坐标 要是没有自动提示需要检查maven有没有 实现代码 /*springboot第三方自动配置实现方法 * 什么是自动配置 自动配置就是springboot启动自动加载的类不需要在手动的控制反转自动的加入bean中 * * *//*第一种方案包扫描 不推荐因为繁琐…

2024 VNCTF----misc---sqlshark sql盲注+流量分析

流量分析 wireshark 可以看到很多 any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(80))),1,0))# P any/**/Or/**/(iF(((((Ord(sUbstr((sElect(grOup_cOncat(password))frOm(users)) frOm 1 fOr 1))))in(104))),1,0))#…

18-k8s控制器资源-cronjob控制器

job控制器是执行完一次任务&#xff0c;就结束&#xff1b; cronjob控制器&#xff0c;是基于job控制器&#xff0c;定期频率性执行任务&#xff1b;等同于linux系统中的crontab一样&#xff1b; 1&#xff0c;编辑cronjob资源清单 [rootk8s231 pi]# vim cronjob.yaml apiVers…

mfc140u.dll文丢失导致应用程序无法正常,有哪些解决办法

mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;的一个重要组件&#xff0c;它提供了许多用于开发Windows应用程序的功能和工具。然而&#xff0c;当系统或应用程序升级、恶意软件感染或文件损坏以及用户错误操作等情况发生时&#xff0c;mfc140u.dll文…

HarmonyOS—状态管理概述

在前文的描述中&#xff0c;我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面&#xff0c;就需要引入“状态”的概念。 图1 效果图 上面的示例中&#xff0c;用户与应用程序的交互触发了文本状态变更&#xff0c;状态变更引起了UI渲染&#xff0c;UI从“He…

【OrangePi Zero2的系统移植】嵌入式Linux系统的组成、编译u-boot、编译内核、Linux根文件系统

一、嵌入式Linux系统的组成 二、编译u-boot 三、编译内核 四、Linux根文件系统 一、嵌入式Linux系统的组成 嵌入式Linux系统和PC完整的操作系统的对比如下&#xff1a; BIOS和UEFI的作用&#xff1a; a. 进行硬件自检&#xff0c;检测内存&#xff0c;CPU&#xff0c;显卡&a…

使用LlamaIndex和ChatGPT的无代码检索增强生成(RAG)

自从ChatGPT和类似的LLM推出以来&#xff0c;出现了大量的RAG工具和库。人们需要了解如何使用LlamaIndex和ChatGPT的无代码RAG。 检索增强生成(RAG)是使用大型语言模型(LLM)的关键工具。RAG使LLM能够将外部文档合并到它们的响应中&#xff0c;从而更紧密地与用户需求保持一致。…

Servlet要点总结

一、什么是 Servlet Servlet 在开发动态 WEB 工程中&#xff0c;得到广泛的应用&#xff0c;掌握好 Servlet 非常重要了 , Servlet( 基 石 ) 是 SpringMVC 的基础 Servlet(java 服务器小程序 ) &#xff0c;它的特点 : 1. 他是由服务器端调用和执行的 ( 一句话&…

RTC时钟

目录 一、STM32F407内部RTC硬件框图&#xff0c;主要由五大部分组成&#xff1a; 二、硬件相关引脚 三、具体代码设置步骤 四、了解其它知识点 一、STM32F407内部RTC硬件框图&#xff0c;主要由五大部分组成&#xff1a; ① 时钟源 (1)LSE&#xff1a;一般我们选择 LSE&am…