力扣 LCP 06. 拿硬币——递归+贪心思想

在这里插入图片描述

题解:此题应用 递归+贪心思想解题,先拿一堆,一次先拿两枚硬币再拿一枚硬币,拿完一堆再拿下一堆,直到所有硬币堆拿完

class Solution {
    
    public int minCount(int[] coins) {
  ArrayList<Integer> res=new ArrayList<>();	//创建用于统计结果的集合
        minCountCore(coins,0,res);				//dfs求解,从第0堆硬币开始拿
            return res.size();				//统计到硬币的次数
           
    }
     static void minCountCore(int[] coins,int cur,ArrayList<Integer> res ) {
             if (cur>coins.length-1)		//所有硬币堆拿完
              return  ;
              if (coins[cur]==0) {			//一堆拿完则返回
                return;
              }
          if (coins[cur]-2>=0)   //先拿两枚
          {
              coins[cur]-=2;				//原硬币堆中个数减2
              res.add(1);				//拿的次数加1
              minCountCore(coins,cur,res);
          }else if(coins[cur]-1>=0) {		//再拿一枚 	
          coins[cur]-=1;				//原硬币堆中个数减1
               res.add(1);						//拿的次数加1
          }
        minCountCore(coins,cur+1,res);          //拿下一堆
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值