zoukankan      html  css  js  c++  java
  • 柠檬水找零-贪心算法-基于GO

    在柠檬水摊上,每一杯柠檬水的售价为5美元。
    顾客排队购买,一次购买一杯。

    每一个顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。
    必须给每个顾客正确找零。
    注意:一开始你手头并没有任何零钱。
    如果你能给每位顾客正确找零,则返回true,否则返回false。

    • 贪心算法
      • 顾客给你5块,不用找零
      • 顾客给你10块,找5块
      • 顾客给你20块,找10+5块或者5+5+5块(优先找10+5块,剩下5+5+5块,因为5块多了更利于找零)
    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func findLength(nums []int)int{
    	var start = 0
    	var maxLength = 0
    	for i:=1;i<len(nums);i++{
    		if nums[i]<=nums[i-1]{
    			start = i
    		}
    		maxLength = int(math.Max(float64(maxLength),
    							float64(i-start+1)))
    	}
    
    	return maxLength
    }
    
    func change(nums []int)bool{
    	var five = 0
    	var ten = 0
    	for _, bill := range nums{
    		switch bill {
    		case 5:
    			five++ // 刚刚好
    		case 10:
    			if five==0{
    				return false
    			}
    			five--
    			ten++
    		case 20:
    			if five>0 && ten>0{
    				five--
    				ten--
    			}else if five>=3{
    				five -= 3
    			}else{
    				return false
    			}
    		}
    	}
    	return true
    }
    
    func main(){
    	//var nums = []int{5,5,20}//false
    	var nums = []int{5,5,10}//true
    	fmt.Println(change(nums))
    }
    
  • 相关阅读:
    方法参数的传递方式
    方法设计
    接口
    SQL 安装MySQL
    Windows 10 安装 wordpress
    Windows10安装PHP7+Apache 2.4
    做一个增删改查的工程
    清除缓存
    创建POJO
    VI快捷键
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14631629.html
Copyright © 2011-2022 走看看