代码随想录第30天 | ● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

860.柠檬水找零

/**
 * @param {number[]} bills
 * @return {boolean}
 */
var lemonadeChange = function(bills) {
   let d5=0
   let d10=0
   let d20=0
   for(let i=0;i<bills.length;i++){
       if(bills[i]===5){
           d5+=1
       }
       else if(bills[i]===10){
           if(d5>=1){
                  d5--
                  d10++
               }
             else
                return false
       }
       else
         {
             if(d5>=1&&d10>=1){
                 d5--
                 d10--
             }
             else if(d5>=3){
                 d5-=3
             }
             else 
             return false
         }
          
   }return true
};


406.根据身高重建队列

/**
 * @param {number[][]} people
 * @return {number[][]}
 */
var reconstructQueue = function(people) {
  // people.sort((x,y)=>y[0]-x[0])
    people.sort((a, b ) => {
        if(b[0] !== a[0]) {
            return b[0] - a[0]
        } else {
            return a[1] - b[1]
        }
        
    })
    let ok=[]
    for(let i=0;i<people.length;i++){
          ok.splice(people[i][1],0,people[i]) //纯增加情况
    }
 
   return ok
};

想法

在这里插入图片描述


困难

 people.sort((a, b ) => {
    if(b[0] !== a[0]) {
        return b[0] - a[0]
    } else {
        return a[1] - b[1]
    }
})

先按升高从大到小排,如果身高一样,就按人数从小到大排队


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

/**
 * @param {number[][]} points
 * @return {number}
 */
var findMinArrowShots = function(points) {
  points.sort((x,y)=>(x[0]-y[0]))
  //按开始节点排序
  let r=0
  for(let i=0;i<points.length-1;i++){
  //有重叠,(两个气球化为一个气球),更新最右边框
   if(points[i][1]>=points[i+1][0]){
      points[i+1][1]=points[i+1][1]>points[i][1]?points[i][1]:points[i+1][1]
   }
  //没有重叠,说明可以射出箭了
  else
      r++
      }
      return r+1
};


想法

局部最优:当气球出现重叠,一起射,所用弓箭最少。全局最优:把所有气球射爆所用弓箭最少。在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值