1.种花问题

//假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
//
// 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则
//的情况下种入 n 朵花?能则返回 true ,不能则返回 false。
//
//
//
// 示例 1:
//
//
//输入:flowerbed = [1,0,0,0,1], n = 1
//输出:true
//
//
// 示例 2:
//
//
//输入:flowerbed = [1,0,0,0,1], n = 2
//输出:false
//
//
//
//
// 提示:
//
//
// 1 <= flowerbed.length <= 2 * 104
// flowerbed[i] 为 0 或 1
// flowerbed 中不存在相邻的两朵花
// 0 <= n <= flowerbed.length

种花问题,也叫男厕问题,解决男性小便时如果相邻有人的话就会十分尴尬的问题,计算一个厕所内的小便池的使用率。这个首先需要考虑首项和尾项,然后我们再考虑中间的,中间的我们只需要设置前一个和后一个没有人使用的时候我们就能使用,使用完之后我们还需要把那一位标记成1,证明这个坑也被人占了,再计算接下来的。

public boolean canPlaceFlowers(int[] flowerbed, int n) {int m = 0;if(flowerbed.length==1){if(flowerbed[0]==0 && n<=1){return true;}else if(flowerbed[0]==1 && n==0){return true;}else {return false;}}if(flowerbed[0] == 0 && flowerbed[1] == 0){flowerbed[0] = 1;m++;}if(flowerbed[flowerbed.length-1]==0 && flowerbed[flowerbed.length-2]==0){flowerbed[flowerbed.length-1]=1;m++;}for (int i = 1; i < flowerbed.length-1; i++) {if(flowerbed[i] == 0 && flowerbed[i-1]==0 && flowerbed[i+1]==0){flowerbed[i]=1;m++;}}if(m>=n){return true;}else {return false;}}

2.柠檬水找零

//在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
//
// 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
//
// 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
//
// 注意,一开始你手头没有任何零钱。
//
// 如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
//
// 示例 1:
//
// 输入:[5,5,5,10,20]
//输出:true
//解释:
//前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
//第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。
//第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。
//由于所有客户都得到了正确的找零,所以我们输出 true。
//
//
// 示例 2:
//
// 输入:[5,5,10]
//输出:true
//
//
// 示例 3:
//
// 输入:[10,10]
//输出:false
//
//
// 示例 4:
//
// 输入:[5,5,10,10,20]
//输出:false
//解释:
//前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。
//对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。
//对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。
//由于不是每位顾客都得到了正确的找零,所以答案是 false。
//
//
//
//
// 提示:
//
//
// 0 <= bills.length <= 10000
// bills[i] 不是 5 就是 10 或是 20
//
// Related Topics 贪心算法

柠檬水找零需要直接计数就行了,只需要记用于找零的钞票的数量,即5元和10元的钞票,当下一轮需要用来找零的钞票不够时,比如顾客给了20,我们手上没有10块了,或者没有三个5块了,就返回false,其他时候只进行计数。下面是评论中的一个方法,它认为我们无论遇到顾客给的什么钱,都是需要5块钱来找的,如果没有5块就免谈,所以我们每轮循环都会对5元的个数进行判断,一旦小于0就返回false,这也不失为一种好方法。

public boolean lemonadeChange(int[] bills) {int five = 0;int ten = 0;for (int i = 0; i < bills.length; i++) {if (bills[i] == 5) {five++;} else if (bills[i] == 10) {if (five > 0) {five--;ten++;} else {return false;}//下面就是判断遇见20块是否有10块的钱,如果有就用10+5,如果没有就用三张5元} else if (bills[i] == 20) {if (ten > 0 && five > 0) {ten--;five--;} else if (five >= 3) {five -= 3;} else {return false;}}}return true;}
public boolean lemonadeChange(int[] bills) {int five = 0, ten = 0;for (int i : bills) {if (i == 5) five++;else if (i == 10) {five--; ten++;}else if (ten > 0) {ten--; five--;} else five -= 3;if (five < 0) return false;}return true;}

LeetCode24--种花问题和柠檬水找零相关推荐

  1. LeetCode 860[Python]. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。

    LeetCode 860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 ...

  2. Leetcode 每日一题——860. 柠檬水找零

    860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 ...

  3. LeetCode每日一题--860. 柠檬水找零(贪心)

    题目:跳转至 860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元 ...

  4. 【LeetCode】两道贪心算法题目-455分发饼干,860柠檬水找零

    文章目录 第455题:分发饼干 第860题:柠檬水找零 第455题:分发饼干 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个 ...

  5. 贪心相关:柠檬水找零、买卖股票的最佳时机、分发饼干、跳跃游戏 ...

    文章目录 一.柠檬水找零 二.买卖股票的最佳时机 三.买卖股票的最佳时机II 四.分发饼干 五.模拟行走机器人(困难) 六.跳跃游戏 七.跳跃游戏II(困难) 一.柠檬水找零 注意:是按顺序收取,不是 ...

  6. 笔记1 第11课 贪心初步 ——柠檬水找零,分发饼干,跳跃游戏,完成所有任务所需最小能量——极客时间算法

    之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为 方法类型1 题1 题解 题2 题解 方法类型2 题1 题解 -- 题目大体来自leetcode 和 acwing ...

  7. Suzy想吃烤蛋挞了Day35 | 贪心算法进行时:860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

    860. 柠檬水找零 solution 不要漏掉的一种情况是:如果收到了20,可以找10+5,或者5+5+5 class Solution:def lemonadeChange(self, bills ...

  8. 柠檬水找零---贪心算法(c++)实现

    来源:力扣 链接:https://leetcode.cn/problems/lemonade-change/ 题目详情: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 ...

  9. 面试算法 柠檬水找零

    1.题目:柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为5美元.顾客排队购买你的产品,一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付5美元.10美元或20美元.必须给每个顾客正确找零 注意,一开始 ...

最新文章

  1. 【ML】【GM】【转】图模型(graphical model, GM)的表示
  2. UML建模—EA创建Class(类图)
  3. dockerfile中的run_Docker3-Dockerfile创建镜像的方法(推荐docker file这种方法)
  4. 基于CentOS7,MySQL5.7的 读写分离
  5. WinForm如何控制ShowDialog()的返回值,并且可以判断是否会弹出主窗体
  6. hive学习2(Navicat连接hive)
  7. JAVA处理模型的步骤,java-处理模型中条件字段的最佳方法
  8. JavaWeb学习(二)Maven
  9. 第五章 APP元素定位
  10. 怎么测试软件的自动升级,欧姆龙编程软件怎么升级 自动更新步骤详解
  11. CSS表格和表单的样式
  12. 指派问题中匈牙利算法----Python实现
  13. 如何测试某个网站的图片是否可外链使用
  14. 前度构建工具gulp
  15. html中qq号码怎么写,qq号码免费申请6位号的方法
  16. UGUI的DrawCall和Rebuild
  17. web前端-html-css-字体的分类(serif衬线、sans-serif非衬线、monospace等宽、cursive草书、fantasy虚幻)
  18. jabcob 使用API
  19. 单片机、芯片、arduino、树莓派、Jetson Nano、esp32、stm32
  20. python分支结构if详解

热门文章

  1. python爬虫----DAY4-1-----验证码识别实战---识别古诗文网
  2. 面试中被问上家公司情况,应该如实说吗?
  3. Python希尔排序
  4. 第9.2节 Python的文件打开函数open详解
  5. c++11 bind直接绑定未初始化类的成员函数、类对象的operater()的方法与区别
  6. iOS9.0 升级后的常见问题
  7. SpringBoot-自定义Start
  8. SpringBoot之分页插件PageHelper的使用
  9. 游戏服务端开发之防御性编程
  10. 使用百度api实现文本转语音功能