LEETCODE-DAY35


title: LEETCODE-DAY35

date: 2024-03-26 16:11:08
tags:

今日内容:860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

T1

python 复制代码
class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        table={5:0,10:0,20:0}
        for i in range(len(bills)):
            if bills[i]==5:
                table[5]+=1
            elif bills[i]==10:
                if table[5]<=0:
                    return False
                else:
                    table[10]+=1
                    table[5]-=1
            elif bills[i]==20:
                if table[5]<=0 or table[10]<=0:
                    return False 
                else: 
                    table[20]+=1
                    table[10]-=1
                    table[5]-=1
        return True

输入

bills =

5,5,10,20,5,5,5,5,5,5,5,5,5,10,5,5,20,5,20,5

输出

false

预期结果

true

python 复制代码
class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        table={5:0,10:0,20:0}
        for i in range(len(bills)):
            if bills[i]==5:
                table[5]+=1
            elif bills[i]==10:
                if table[5]<=0:
                    return False
                else:
                    table[10]+=1
                    table[5]-=1
            elif bills[i]==20:
                if (5*table[5]+10*table[10]<15) or table[5]<=0:
                    return False 
                else: 
                    table[20]+=1
                    table[10]-=1
                    table[5]-=1
        return True
        

AC

T2

本题主要难点在于如何将数组按照h从大到小,h相同时k从小到大的方式进行排序

python 复制代码
class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        people.sort(key=lambda x:(-x[0], x[1]))
        queue=list()
        for i in range(len(people)):
            queue.insert(people[i][1],people[i])
        return queue

T3

python 复制代码
class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points.sort()
        l=len(points)
        for i in range(l):
            if i>0 and points[i][0]<points[i-1][1]:
                points[i][1]=points[i-1][1]
                points.pop(i-1)

        return len(points)

IndexError: list index out of range

~~~~~~^^^

if i>0 and pointsi0<pointsi-11:

队列长度减小了

python 复制代码
class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points.sort()
        l=len(points)
        for i in range(l):
            if i>0 and i<len(points) and points[i][0]<points[i-1][1]:
                points[i][1]=points[i-1][1]
                points.pop(i-1)

        return len(points)

输入

points =

\[1,2\],\[2,3\],\[3,4\],\[4,5\]

输出

4

预期结果

2

python 复制代码
class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points.sort()
        l=len(points)
        for i in range(l):
            if i>0 and i<len(points) and points[i][0]<=points[i-1][1]:
                points[i][1]=points[i-1][1]
                points.pop(i-1)

        return len(points)

points =

\[3,9\],\[7,12\],\[3,8\],\[6,8\],\[9,10\],\[2,9\],\[0,9\],\[3,9\],\[0,6\],\[2,8\]

输出

5

预期结果

2

问题在于points pop之后指标也会产生变化,所以需要定义一个变量来记录重叠次数

思路:没有重叠时需射l箭,每有一个重叠少射一箭

python 复制代码
class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points.sort()
        l=len(points)
        j=0
        for i in range(l):
            if i>0 and points[i][0]<=points[i-1][1]:
                points[i][1]=min(points[i-1][1],points[i][1])
                j+=1

        return l-j

AC

python 复制代码
相关推荐
xuxigifxfh21 分钟前
牛客:HJ21 简单密码
java·开发语言·算法
qq_4086068624 分钟前
确界的倒数性质证明
学习·算法
小蒋观天下30 分钟前
【安防AI工程实战二】AI摄像头帧率抖动根治:ISP曝光时序与AI推理时序冲突深度定位
人工智能·深度学习·算法·安全·机器学习·ai大模型
云和数据.ChenGuang41 分钟前
trace 是RAG检索链路的**全链路追踪日志对象
人工智能·深度学习·算法·排序算法
Evand J44 分钟前
【PMSM例程6】永磁同步电机(PMSM)基于增广EKF的d-q轴电感分阶段辨识算法|电机参数估计与误差分析
算法·matlab·电机·ekf
垆边人似月.1 小时前
华为题:最多可以参加的会议数目
数据结构·c++·算法
Matlab程序猿1 小时前
【MATLAB源码-第460期】基于matlab的OTFS通信系统SLM峰均比抑制及非线性功率放大器失真与误码性能仿真
开发语言·算法·matlab·slm·otfs
xiangyun611 小时前
C++ list 模拟实现(一):手撕双向链表,从节点到迭代器
数据库·c++·算法·链表·stl·list
码爸9 小时前
线性回归算法
算法·机器学习·线性回归
Coder-magician10 小时前
《代码随想录》刷题打卡day51:图论-part09(dijistra堆优化,Bellman_ford算法)
算法·图论