2024.5.8 LeetCode 刷题记

目录

  • 面试题 17.14. 最小K个数
  • 1365. 有多少小于当前数字的数字
  • 539. 最小时间差
  • 410. 分割数组的最大值

面试题 17.14. 最小K个数


题目链接

class Solution:def smallestK(self, arr: List[int], k: int) -> List[int]:import heapqans=[]for num in arr:heapq.heappush(ans,-num)if len(ans)>k:heapq.heappop(ans)return [-num for num in ans]

Python 中 heapq 模块默认是 小顶堆(超出ans容量后,每次弹出最小的元素,保留较大元素)
实现 大顶堆 方法:小顶堆的插入和弹出操作均将元素 取反 即可

若实现最大 K 个数

class Solution:def smallestK(self, arr: List[int], k: int) -> List[int]:import heapqans=[]for num in arr:heapq.heappush(ans,num)if len(ans)>k:heapq.heappop(ans)return ans

1365. 有多少小于当前数字的数字


题目链接

计数排序 可能是所有排序里最快的一种,因为它不涉及比较。但是它有个问题就是需要的空间很大。所以一般只涉及数字的时候,还能应付,一旦涉及到字母混数字排序,它就抓瞎了。你总不能搞一个各种字母组合的计数表吧。这个应该是个重点,本题只有0 - 100的数字,就非常适合计数排序。

class Solution:def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:place = [0] * 101output = []for n in nums:place[n] += 1  # 把从0 - 100的所有数的个数都数出来了。lessthan = []  # 把从0 - 100的所有数的比它小的数的个数都列出来。temp = 0  # 其实就是刚才的place数组的累加for p in place:lessthan.append(temp)temp += pfor n in nums:  # 最后对应nums把lessthan的值掏出来作为输出。output.append(lessthan[n])return output

539. 最小时间差


题目链接

根据题意,一共有 24×60=1440 种不同的时间。由鸽巢原理可知,如果 timePoints 的长度超过 1440,那么必然会有两个相同的时间,此时可以直接返回 0。

class Solution:def getMinutes(self,t):return ((ord(t[0]) - ord('0')) * 10 + ord(t[1]) - ord('0')) * 60 + (ord(t[3]) - ord('0')) * 10 + ord(t[4]) - ord('0')def findMinDifference(self, timePoints: List[str]) -> int:n = len(timePoints)if n > 1440:return 0timePoints.sort()ans = float('inf')t0Minutes = self.getMinutes(timePoints[0])preMinutes = t0Minutesfor i in range(1, n):minutes = self.getMinutes(timePoints[i])ans = min(ans, minutes - preMinutes)  # 相邻时间的时间差preMinutes = minutesans = min(ans, t0Minutes+1440-preMinutes)  # 首尾时间的时间差return ans

410. 分割数组的最大值


题目链接

「使……最大值尽可能小」是二分搜索题目常见的问法。

本题意思其实就是有一个数组,你要分割成 k 份,每一份都有一个和,这些和当中的最大值
你要让它最小。我们设这个值为 x 。详细题解 参见

class Solution:def splitArray(self, nums: List[int], k: int) -> int:# 用于检查是否能将数组划分为 cnt(<=k)个子数组,且每个子数组的和 total<=xdef check(x: int) -> bool:# total表示当前分割子数组的和# cnt表示已经分割出的子数组的数量total, cnt = 0, 1for num in nums:if total + num > x:cnt += 1total = numelse:total += numreturn cnt <= kleft = max(nums)right = sum(nums)while left < right:mid = (left + right) // 2if check(mid):right = midelse:left = mid + 1return left

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

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

相关文章

01-xss基本原理

核心:攻击的是前端&#xff0c; 一、课程引入 1、开发一个简单的PHP页面&#xff0c;代码如下&#xff1a; <?php // xss 基础演示代码&#xff1a;从浏览器中接受一个URL地址参数名为content if(isset($_GET[content])){$content$_GET[content];echo "你输入的内容…

再议大模型微调之Zero策略

1. 引言 尽管关于使用Deepspeed的Zero策略的博客已经满天飞了&#xff0c;特别是有许多经典的结论都已经阐述了&#xff0c;今天仍然被问到说&#xff0c;如果我只有4块40G的A100&#xff0c;能否进行全量的7B的大模型微调呢&#xff1f; 正所谓“纸上得来终觉浅&#xff0c;…

进程状态与优先级

Linux内核源代码&#xff1a; 首先我们需要明确一点&#xff0c;Linux操作系统和操作系统的进程状态是不同的 上图大概标识了各个状态对应在操作系统的状态 普通进程 R运行状态&#xff08;running&#xff09;: 并不意味着进程一定在运行中&#xff0c;它表明进程要么是在…

ROS 2边学边练(44)-- 从头开始构建一个视觉机器人模型

前言 从此篇开始我们就开始接触URDF(Unified Robot Description Format&#xff0c;统一机器人描述格式)&#xff0c;并利用其语法格式搭建我们自己的机器人模型。 动动手 开始之前我们需要确认是否安装joint_state_publisher功能包&#xff0c;如果有安装过二进制版本的urdf_…

解密某游戏的数据加密

前言 最近有个兄弟通过我的视频号加我&#xff0c;咨询能否将这个dubo游戏游戏开始前就将数据拿到从而进行押注&#xff0c;于是通过抓包工具测试了下&#xff0c;发现数据有时候是明文&#xff0c;有时候确实密文&#xff0c;大致看了下有这几种加密&#xff1a;Md5aes、Md5&a…

网络层协议之 IP 协议

IP 协议格式 4 位版本&#xff1a;此处的取值只有两个&#xff0c;4&#xff08;IPv4&#xff09;和 6&#xff08;IPv6&#xff09;&#xff0c;即指定 IP 协议的版本。 4 位首部长度&#xff1a;描述了 IP 报头多长&#xff0c;IP 报头是变长的&#xff0c;因为报头中的选项部…

点餐小程序 点餐系统 微信点餐系统 支持微信小程序 支付公众号 可接入第三方配送 全开源uniapp

餐饮连锁v2版-体验后台&#xff08;复制粘贴以下地址到浏览器&#xff0c;打开网址即可登录&#xff0c;) 本文来自&#xff1a;点餐小程序 点餐系统 微信点餐系统 支持微信小程序 支付公众号 可接入第三方配送 全开源uniapp - 源码1688 演示后台&#xff1a;https://diancan.…

异构图神经网络——Heterogeneous Graph Neural Networks

相关代码见文末 1.回顾同构图 1.1 GNN GNN基本计算方法——邻接矩阵乘以节点,聚合相邻节点的特征,得到本节点的特征表达 1.2 Graph Attention Network 引入图注意力,实现边的权重可学习,最简单的方法是,将两个节点的特征进行拼接,使用一组可学习的权重参数映射为边的权…

华为数据之道第一部分导读

目录 导读 第一部分 序 第1章 数据驱动的企业数字化转型 非数字原生企业的数字化转型挑战 业态特征&#xff1a;产业链条长、多业态并存 运营环境&#xff1a;数据交互和共享风险高 IT建设过程&#xff1a;数据复杂、历史包袱重 数据质量&#xff1a;数据可信和一致化…

学习大数据,所需更要的shell基础(2)

文章目录 read读取控制台输入函数系统函数bashnamedirname 自定义函数Shell工具&#xff08;重点&#xff09;cutawk 正则表达式入门常规匹配常用特殊字符 read读取控制台输入 1&#xff09;基本语法 read (选项) (参数) ①选项&#xff1a; -p&#xff1a;指定读取值时的提示…

C++初识多态(1)

1.多态要解决的问题&#xff08;引入&#xff09; 任何一种机制的存在&#xff0c;必然是有其存在的意义的&#xff0c;例如我们前面学过的函数重载&#xff0c;运算符重载&#xff0c;以及引用等等&#xff0c;都是解决一些特殊问题的&#xff1b; 下面通过一些具体的例子&a…

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如一个场景…

剁手党必看——转转红包使用规则与最优组合计算全解析

​ 1、省钱攻略基础之“了解平台红包使用规则” 2、举个栗子 3、最优红包组合计算方法进化过程 3.1、初代“笛卡尔乘积”版 3.2、二代“边算边比较Map聚合”版 3.3、三代“边算边比较数组索引定位”版 4、总结 1、省钱攻略基础之“了解平台红包使用规则” 规则一&#x…

介绍 ffmpeg.dll 文件以及ffmpeg.dll丢失怎么办的五种修复方法

ffmpeg.dll 是一个动态链接库文件&#xff0c;属于 FFmpeg运行库。它在计算机上扮演着非常重要的角色&#xff0c;因为它提供了许多应用程序和操作系统所需的功能和组件。当 ffmpeg.dll 文件丢失或损坏时&#xff0c;可能会导致程序无法正常运行&#xff0c;甚至系统崩溃。下面…

数据结构-线性表-链表-2.3-4

试编写在带头结点的单链表L中删除一个最小值结点的高效算法&#xff08;假设最小值结点是唯一的&#xff09;。 使用四个指针&#xff0c;p,pre,minp,minpre 用p从头至尾扫描单链表&#xff0c;pre指向*p结点的前驱&#xff0c;用minp保存最小结点的指针&#xff08;初始认为…

C#读sqlite数据库

using System.Data.SQLite;//若没有库需要在Nugut下载 private void ReadDatabase() { //判断有无数据库 if (!File.Exists(dbPath)) { SQLiteConnection.CreateFile(dbPath); MessageBox.Show(…

紫外激光打标机适合在哪些材料表面进行标记

紫外激光打标机适合在多种材料表面进行标记&#xff0c;特别是那些对热敏感或者需要高精度、高清晰度标记的材料。以下是一些常见的适用材料&#xff1a; 1. 塑料&#xff1a;紫外激光打标机在塑料材料上表现尤为出色&#xff0c;因为紫外激光的短波长和高能量密度使得它能够在…

Python | Leetcode Python题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution:def climbStairs(self, n: int) -> int:a, b 1, 1for _ in range(n - 1):a, b b, a breturn b

TCP长连接短链接

1、短连接 短连接是指通讯双方有数据交互时&#xff0c;就建立一个连接&#xff0c;数据发送完成后&#xff0c;则断开此连接&#xff0c;即每次连接只完成一项业务的发送。 2、长连接 长连接是指在一个连接上可以连续发送多个数据包&#xff0c;在连接保持期间&#xff0c;…

Nginx启动后IP加端口不能正常访问

背景介绍 新增NGINX配置文件后&#xff0c;重启nginx无法使用IP端口访问服务&#xff0c;域名可以访问服务。NGINX启动不报错&#xff0c;测试nginx配置文件nginx -t也没问题。 定位问题思路与步骤 查看NGINX配置文件 发现NGINX配置文件中的user是www user www www;查看N…