代码随想录算法训练营第三十五天| 860 柠檬水找零 406 根据身高重建队列 452 用最少数量的箭引爆气球

目录

860 柠檬水找零

406 根据身高重建队列

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


860 柠檬水找零

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int five = 0;
        int ten = 0;
        for(int bill : bills){
            if(bill == 5)five++;
            else if(bill == 10){
                ten++;
                five--;
            }else{
                if(ten > 0){
                    ten--;
                    five--;
                }else{
                    five -= 3;
                }
            }
            if(ten < 0 || five < 0)return false;
        }
        return true;
    }
}

时间复杂度O(n)

空间复杂度O(1)

406 根据身高重建队列

people[i] = {h,k};

按照h对people数组进行降序排序,如果身高相同则按照k进行升序排序。

创建链表res来存储重建后的顺序。

遍历people数组并加入到res的正确位置下。

将res转化为数组并返回。

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people,(a,b) -> {
            if(a[0] == b[0])return a[1] - b[1];
            return b[0] - a[0];
        });
        Listres = new LinkedList<>();
        for(int[] o : people){
            res.add(o[1],o);
        }
        return res.toArray(new int[people.length][]);
    }
}

时间复杂度O(n^2)

空间复杂度O(logn)

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

你可能感兴趣的:(代码随想录算法训练营,算法)