首页 > 其他分享 >day34

day34

时间:2023-02-19 19:55:52浏览次数:31  
标签:return nums int day34 people points 气球

1、leetcode860 柠檬水找零

class Solution {
    public boolean lemonadeChange(int[] bills) {
        if(bills[0] != 5) {
            return false;
        }

        int five_nums = 0; 
        int ten_nums = 0;
        
        for(int i=0; i<bills.length; i++) {
            if(bills[i] == 5){
                five_nums++;
            }
            if(bills[i] == 10) {
                if(five_nums<1) {
                    return false;
                }
                ten_nums++;
                five_nums--;
            }
            if(bills[i] == 20) {
                // 优先消耗10美元,因为5美元的找零用处更大,能多留着就多留着
                if(ten_nums>0 && five_nums>0) {
                    ten_nums--;
                    five_nums--;
                } else if(five_nums>=3) {
                    five_nums -= 3;
                } else {
                    return false;
                }
            }
        }
        return true;

    }
}

2、leetcode406 根据身高重建队列

  1. 思路

    • 按照身高排序之后,优先按身高高的people的k来插入,后序插入节点也不会影响前面已经插入的节点,最终按照k的规则完成了队列。

    • 所以在按照身高从大到小排序后:

      • 局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性

      • 全局最优:最后都做完插入操作,整个队列满足题目队列属性**

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        // 身高从大到小排(身高相同k小的站前面)
        Arrays.sort(people, (a,b) -> {
             if(a[0] == b[0]) return a[1] - b[1];
             return b[0] - a[0];
        });

        LinkedList<int[]> que = new LinkedList<>();

        for (int[] p : people) {
            que.add(p[1],p);
        }

        return que.toArray(new int[people.length][]);
    }
}

3、leetcode452 用最少数量的箭引爆气球

class Solution {
    public int findMinArrowShots(int[][] points) {
        // 根据气球直径的开始坐标从小到大排序
        Arrays.sort(points, (a, b) -> Integer.compare(a[0], b[0]));
        
        int count =1;// points 不为空至少需要一支箭
        for(int i=1; i<points.length; i++) {
            if(points[i][0] > points[i-1][1]) {  // 气球i和气球i-1不挨着,注意这里不是>= ,=就挨着了
                count++;
            } else {  // 气球i和气球i-1挨着
                points[i][1] = Math.min(points[i-1][1], points[i][1]); // 更新重叠气球最小右边界
            }
        }

        return count;

    }
}

标签:return,nums,int,day34,people,points,气球
From: https://www.cnblogs.com/hzj-bolg/p/17135436.html

相关文章

  • 【算法训练营day34】LeetCode1005. K次取反后最大化的数组和 LeetCode134. 加油站 Lee
    LeetCode1005.K次取反后最大化的数组和题目链接:1005.K次取反后最大化的数组和独上高楼,望尽天涯路思路对了,代码也ac了,但是代码太臃肿了。classSolution{private:......
  • day34_0513.找树左下角的值0112.路径总和
    0513.找树左下角的值0112.路径总和【0513.找树左下角的值】一遍acclassSolution{public:intfindBottomLeftValue(TreeNode*root){intresult......
  • day34-JSON&Ajax02
    JSON&Ajax021.Ajax基本介绍1.1Ajax是什么AJAX即“AsynchronousJavaScriptAndXML”(异步JavaScript和XML)Ajax是一种浏览器异步发起请求(指定发哪些数据),局部更新页面......
  • Day34.1:Date
    Date1.1Date概述Date表示特定的瞬间时间,精确到毫秒。Date中大部分的方法都被Calendar类的方法所取代。时间单位:1秒=1000毫秒1毫秒=1000微秒1微秒=1000纳秒1.2Date......
  • 代码随想录Day34
    LeetCode501.二叉搜索树的众数给定一个有相同值的二叉搜索树(BST),找出BST中的所有众数(出现频率最高的元素)。假定BST有如下定义:结点左子树中所含结点的值小于等于当......
  • day34 函数
    1.函数定义函数:正常定义 functionabs(x){if(x>=0){returnx;}else{return-x;}}//方式一 var定义 var......
  • 进入python的世界_day34_网络编程——同步与异步、进程、消息队列、互斥锁
    一、同步与异步、阻塞与非阻塞1.同步与异步介绍​ 一种方式,可以用来表示提交任务方提交任务后的行为同步:好比去办车牌的时候,提交了资料就呆在大厅一动不动,等着审核结果......
  • day34 JSTL标签
    JSTL标签<!--写在jsp文件的最前--><!--JSTL标签库是一个JSP标签的集合,封装了许多jsp应用程序通用的核心功能prefix="c"标签库的别名是c--><%@tagliburi="http://......
  • 代码随想录day34 | 1005.K次取反后最大化的数组和 134.加油站 135. 分发糖果
    1005.K次取反后最大化的数组和题目|文章思路如何让翻转后的数组和最大,就是尽可能的反转绝对值大的负数。当反转次数多余时,不断反转绝对值最小的数。首先将整个数组按......
  • day34 1005
    1005. K次取反后最大化的数组和classSolution{publicintlargestSumAfterKNegations(int[]nums,intk){Arrays.sort(nums);inti=0;......