算法day35|860,406,452

news2024/11/24 0:29:52

目录

860.柠檬水找零

406.根据身高重建队列

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


860.柠檬水找零

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        five,ten,twenty = 0,0,0
        for bill in bills:
            #情况一:如果bills是5元,不需要找零
            if bill == 5:
                five += 1
            #情况二:如果bills是10元,找5元
            elif bill == 10:
                if five >= 1:
                    five -= 1
                    ten += 1
                else:
                    return False
            #情况三,如果bills是20元,找10元,找5元,贪心算法,先花大的,再画小的
            else:
                if ten >0 and five >0:
                    twenty += 1
                    ten -= 1
                    five -= 1
                elif five >2:
                        five -=3
                else:
                    return False
        return True

看起来还挺难的,只需要知道三个逻辑。

1.如果是5块,不需要找

2.如果是10块,找5

3.如果是20块,找5和10.

本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。

代码随想录

406.根据身高重建队列

大概逻辑,就是分为两个维度,第一个维度是根据height排序,第二个维度是根据k(前面有几个人)排序。

class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        #根据height排序
        people.sort(key=lambda x: (-x[0], x[1]))
        result = []
        #二个维度来判断,第一个为height,第二个为k
        #遍历people数组,看第二位,如果下标是什么,就插入什么
        for p in people:
            result.insert(p[1], p)
        return result

那么这个lamba key到底是怎么排序的呢?

sort是从小到大排序。

insert这个库函数需要记得 

insert()方法在指定位置插入指定值。

代码随想录

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

题目好长,有点难理解。

大概就是说,假设弓箭为8,区间为[1,10],这才能射穿这个气球。如果是11,就不行,问,那么多区间,最少需要多少个箭射穿它。

所以说,我们需要找重复区间,像找个样子

重叠的最小边界,需要一个箭。气球三的边界因为大于最小边界,所以需要一个新的箭

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        if len(points) == 0:return 0
        result = 1
        #排序,根据第一个排,一样的话根据第二个排
        points.sort(key=lambda x:x[0])
        #遍历每一个区间,如果区间的数相邻,那么就可以不算一个结果。如果不相邻,那么算一个结果
        for i in range(1,len(points)):
            if points[i-1][1]<points[i][0]:
                result +=1
            else:
                points[i][1] = min(points[i-1][1],points[i][1])
                print(points[i][1])
        return result

代码随想录

复习

今日任务

  • 24. 两两交换链表中的节点
  • 19.删除链表的倒数第N个节点
  • 面试题 02.07. 链表相交
  • 142.环形链表II
  • 总结

详细布置

24. 两两交换链表中的节点

class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummy = ListNode(0)
        dummy.next = head
        cur = dummy
        while cur.next is not None and cur.next.next is not None:
            temp = cur.next
            temp1 = cur.next.next.next
            cur.next = cur.next.next
            #因为断掉了
            cur.next.next = temp
            temp.next = temp1
            cur = cur.next.next
        return dummy.next

写了20分钟,还是狠不扎实。

步骤问题。到底哪一个是步骤1,步骤2,步骤3,画图是画对了

终止条件写的不对,到底到什么时候停止不确定。

题目链接/文章讲解/视频讲解: 代码随想录

19.删除链表的倒数第N个节点

class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy = ListNode(0)
        dummy.next = head
        slow = dummy
        fast = dummy
        for i in range(n):
            fast = fast.next
        while fast.next is not None:
            slow = slow.next
            fast = fast.next
        slow.next = slow.next.next
        return dummy.next

使用双指针

slow,fast,先移动fast指针一直到倒数第二个。

然后同时移动slow和fast,直到fast 为空的时候。停止移动。然后直接将slow.next == slow.next.next为

题目链接/文章讲解/视频讲解:代码随想录

面试题 02.07. 链表相交

思路就是,先计算他们的差值。

然后移动到他们相同位置的位置,,之后查找是不是相同。如果相同返回节点,不相同返回空。

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        lenA,lenB = 0,0
        curA = headA
        curB = headB
        while curA:
            curA = curA.next
            lenA += 1
        while curB:
            curB = curB.next
            lenB += 1
        curA = headA
        curB = headB
        #寻找
        def find(headA,headB):
            while headA != headB:
                headA = headA.next
                headB = headB.next
            if headA is not None:
                return headA
            else:
                return 
            
        if lenA > lenB:
            diff = lenA-lenB
            for i in range(diff):
                curA = curA.next
            return find(curA,curB)
        elif lenB > lenA:
            diff = lenB -lenA
            for i in range(diff):
                curB = curB.next
            return find(curA,curB)
        else:
            return find(curA,curB)

题目链接/文章讲解:代码随想录

142.环形链表II

算是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。

题目链接/文章讲解/视频讲解:代码随想录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马点评--附近商铺

附近商铺 GEO数据结构 GEO就是Geolocation的简写形式&#xff0c;代表地理坐标。Redis在3.2版本加入了对GEO的支持&#xff0c;允许存储地理坐标消息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a; GEOADD&#xff1a;添加一个地理空间信息&#xff0…

gcexcel-java-5.2.5 Crack update in 2022-11-28

gcexcel高速 Java Excel 电子表格 API 库 在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以在任何地方部署。 创建、加载、编辑和保存 Excel 电子表格 保存为 .XLSX、PDF、HTML、CSV 和 JSON 基于具有零 Excel 依赖性的 Excel 对象模型 在本地、…

Tomcat负载均衡部署动静分离

NginxTomcat架构拓扑 环境部署 Nginx服务器&#xff1a;IP地址192.168.32.3 Tomcat服务器1&#xff1a;IP地址192.168.32.4 Tomcat服务器2&#xff1a;IP地址192.168.32.5 关闭防火墙&#xff0c;关闭开机自启 systemctl stop firewalld.service setenforce 0Nginx 主机安…

计算机组成原理习题课第三章-1(唐朔飞)

计算机组成原理习题课第三章-1&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

高电压放大器与高电流放大器该如何选择使用

虽然电压放大器和电流放大器都属于功率放大器的分支类型&#xff0c;所能起到的效果和作用也都是一致的&#xff0c;不过两者还是细微差别的。经常会有人在后台咨询“电压放大器和电流放大器有什么区别&#xff0c;该如何选择使用”等等&#xff0c;针对这些疑问&#xff0c;今…

zynq实现视频动态字符叠加OSD,提供2套工程源码和技术支持

目录1.网上同行的OSD方案(太low)2.本方案OSD的优势3.HLS实现方案4.OSD延时和资源占用情况5.工程1&#xff1a;zynq7100实现字符叠加6.上板调试验证7.福利&#xff1a;工程源码获取1.网上同行的OSD方案(太low) 视频的字符叠加&#xff0c;简称OSD&#xff0c;是FPGA图像处理的基…

PG::Vegeta1

nmap -Pn -p- -T4 --min-rate1000 192.168.201.73 nmap -Pn -p 22,80 -sCV 192.168.201.73 查看80端口的服务。 没有发现可用的信息&#xff0c;尝试爆破路径。 gobuster dir -e -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt -u htt…

年薪50W的数字前端设计工程师是做什么的?

近两年&#xff0c;芯片行业大火&#xff0c;行业的发展受到了很大的政策支持&#xff0c;芯片行业不仅发展前景好&#xff0c;薪资待遇也很高&#xff0c;所以不少人纷纷转行IC&#xff0c;那么转行IC岗位该如何选择呢&#xff1f;下面IC修真院就重点为大家来介绍一下数字前端…

【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 一、检查是否连接WiFi以及输出WiFi信息 传统的定位方式不适用于室内的垂直定位&#xff0c;原因如下&#xff1a; &#xff08;1&#xff09;卫星定位要求没有障碍物遮挡&#xff0c;它在户外比较精准&#xff0c;在室内信号就…

【Canvas】js用canvas绘制一个钟表时钟动画效果

学习JavaScript的看过来&#xff0c;有没有兴趣用Canvas画图呢&#xff0c;可以画很多有趣的事物&#xff0c;自由发挥想象&#xff0c;收获多多哦&#xff0c;旋转角度绘图这个重点掌握到了吗&#xff0c;这里有一个例子&#xff0c;如何用canvas画钟表时钟动图效果&#xff0…

Mybatis:快速搭建Mybatis(2)

快速搭建Mybatis搭建Mybatis目录框架步骤一&#xff1a;创建Maven工程步骤二&#xff1a;创建mybatis的核心配置文件步骤三&#xff1a;创建mapper接口步骤四&#xff1a;创建Mybatis的映射文件步骤四&#xff1a;通过junit测试增删改查功能步骤五&#xff1a;加入logback日志功…

【JavaSE】String类型

目录 1. Java中为何要有 String 类&#xff1f; 2. String 类中的常用方法 2.1 String 类中的构造方法 2.2 String 类对象的比较 2.2.1 比较是否引用同一个对象 2.2.2 使用 equals 方法 2.2.3 compareTo 方法 2.3 字符串的查找 2.4 字符串与别的数据类型的转换 2.4.1 数值和字…

RationalDMIS 2022位置度评价,轮廓度评价时, 元素理论值变了,如何一劳永逸解决!

1,几何尺寸和公差符号 2.通用尺寸公差符号 3.位置度(Position) 位置度的被测要素有点、直线和平面,基准要素主要有直线和平面。给定位置度的被测要素相对于基准要素必须保持图样给定的正确位置关系,被测要素相对于基准要素的正确位置关系应由基准要素和理论正确尺寸来…

python mitmproxy +雷电模拟器 安装

第一步 安装mitmproxy 首先在安装好python 的情况下 pip install mitmproxy 第二步 电脑端安装证书 进入这个目录下 如果没有就重新mitmproxy 点击mitmproxy-ca.p12&#xff0c;在电脑端安装证书 点击下一页 点击下一页 不用管密码直接下一页 按照途中选择&…

基于Spring更简单的读取和存储对象

在spring的创建和使用这篇博客中有讲到关于Spring存储和读取Bean对象的操作,但是细心的朋友有没有发现那些操作没有想象中的简单呢?所以呀,我今天要给朋友分享的是更简单的存储和读取Bean对象的方法,快来看看吧~ 在Spring中想要更简单的存储和读取对象的核心就是使用注解,这就…

蓝牙学习四(广播)

1.简介 什么叫做广播&#xff0c;顾名思义就像广场上的大喇叭一样&#xff0c;不停的向外传输着信号。不同的是&#xff0c;大喇叭传输的是音频信号&#xff0c;而蓝牙传输的是射频信号。 BLE使用的是无线电波传递信息&#xff0c;就是将数据编码&#xff0c;调制到射频信号中发…

cmake使用

1. cmake概述及例子 CMake快速入门 cmake、qmake、cl之间关系 1.1 各种cmake cmake根据CMakeLists.txt生成makefile&#xff0c;make根据makefile行编译。 1.1.1 最简cmake&#xff1a;生成可执行程序&#xff08;一个文件&#xff09; #CMakeLists.txt cmake_minimum_req…

【正点原子FPGA连载】 第二十章 LCD触摸屏实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十章 LCD触摸…

第十一章 建立语义化版本并提交组件库到NPM仓库

语义化版本是这样规定的。 版本格式&#xff1a;主版本号.次版本号.修订号&#xff08;MAJOR.MINOR.PATCH&#xff09;&#xff0c;版本号递增规则如下&#xff1a; 主版本号&#xff1a;当你做了不兼容的 API 修改&#xff1b;次版本号&#xff1a;当你做了向下兼容的功能性…

springboot+vue毕业生离校系统

目 录 摘 要 I 目 录 III 第1章 概述 1 1.1 研究背景 1 1.2 研究现状 1 1.3 研究内容 2 第二章 开发技术介绍 2 2.1 系统开发平台 2 2.2 平台开发相关技术 3 2.2.1 B/S架构 3 2.2.2 Java技术介绍 4 2.2.3 mysql数据库介绍 4 2.2.4 …