Leetcode刷题-二分查找
灵神的二分视频:二分查找 红蓝染色法_哔哩哔哩_bilibili
34
class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:right = len(nums) - 1left = 0res = [-1,-1]mid = int((right + left)/2)while right >= left:if nums[mid] < target:left = mid + 1mid = int((right + left)/2)continueif nums[mid] > target:right = mid - 1mid = int((right + left)/2)continueif nums[mid] == target:res[0] = midres[1] = midbreakif res[0] != -1:right = mid + 1left = mid - 1while right >= 0 and right < len(nums):if nums[right] != target:breakres[1] = rightright += 1while left >= 0:if nums[left] != target:breakres[0] = leftleft -= 1return res
35
class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left = -1right = len(nums)while left + 1 < right:mid = (left + right) // 2if nums[mid] < target:left = midelse:right = midreturn right
704
class Solution:def search(self, nums: List[int], target: int) -> int:left = -1right = len(nums)while left + 1 < right:mid = (left + right) // 2if nums[mid] < target:left = midelse:right = midif right >= 0 and right < len(nums) and nums[right] == target:return rightelse:return -1
744
class Solution:def nextGreatestLetter(self, letters: List[str], target: str) -> str:left = -1right = len(letters)while left + 1 < right:mid = (left + right) // 2if letters[mid] < chr(ord(target) + 1):left = midelse:right = midif right >= 0 and right < len(letters):return letters[right]else:return letters[0]
2529
class Solution:def maximumCount(self, nums: List[int]) -> int:left = -1right = len(nums)pos = 0neg = 0while left + 1 < right:mid = (left + right) // 2if nums[mid] < 1:left = midelse:right = midpos = len(nums) - rightleft = -1right = len(nums)while left + 1 < right:mid = (left + right) // 2if nums[mid] < 0:left = midelse:right = midneg = rightreturn max(pos,neg)
1385
class Solution:def findTheDistanceValue(self, arr1: List[int], arr2: List[int], d: int) -> int:arr2.sort()res = 0for taget in arr1:left = -1right = len(arr2)while left + 1 < right:mid = (left + right) // 2if arr2[mid] + d < taget:left = midelse:right = midif right == len(arr2) or arr2[right] > taget + d:res += 1return res
1385
先将potions列表排序,保证它是一个单调列表。然后遍历每一个咒语,找到刚好满足success条件的位置,即求出当前咒语和药水的成功对数。
class Solution:def successfulPairs(self, spells: List[int], potions: List[int], success: int) -> List[int]:potions.sort()res = []for i in spells:left = -1right = len(potions)while left + 1 < right:mid = (left + right) // 2if i * potions[mid] < success:left = midelse:right = midres.append(len(potions)-right)return res
2389
class Solution:def answerQueries(self, nums: List[int], queries: List[int]) -> List[int]:ans = []nums.sort()for j in range(1,len(nums)):nums[j] += nums[j-1]print(nums)for i in queries:left = -1right = len(nums)while left + 1 < right:mid = (left + right) // 2if nums[mid] < i + 1:left = midelse:right = midans.append(right)return ans
1170
使用二分查找找到刚好比queries中统计值大1的位置,再用words的长度减去即为答案。
class Solution:def numSmallerByFrequency(self, queries: List[str], words: List[str]) -> List[int]:q = []w = []for i in words:a = min(i)w.append(i.count(a,0,len(i)))for j in queries:b = min(j)q.append(j.count(b,0,len(j)))w.sort()res = []for k in q:left = -1right = len(w)while left + 1 < right:mid = (left + right) // 2if w[mid] < k + 1:left = midelse:right = midres.append(len(w) - right)return res
2080
先记录每个数字出现的位置,再用二分查找找出满足的位置,先找左端,再找右端。
class RangeFreqQuery:def __init__(self, arr: List[int]):pos = defaultdict(list)for i, x in enumerate(arr):pos[x].append(i)self.pos = posdef query(self, left: int, right: int, value: int) -> int:a = self.pos[value]# a.sort()lf = -1lr = len(a)while lf + 1 < lr:mid = (lf + lr) // 2if a[mid] < left:lf = midelse:lr = midres = 0res += lrlf = -1lr = len(a)while lf + 1 < lr:mid = (lf + lr) // 2if a[mid] < right + 1:lf = midelse:lr = midres = lr - resreturn res# Your RangeFreqQuery object will be instantiated and called as such:
# obj = RangeFreqQuery(arr)
# param_1 = obj.query(left,right,value)
2563
排序,然后进行二分查找。排序后顺序可能会混乱,题目要求的是下标 i < j。但是经过分析,我们可以发现,如果使用暴力做法,那么nums[j] 再整个过程中,和除了他自己本身的数都进行了一次数对判断(即nums[j] + 任意非自己的数)。 假设数对(i,j),i < j 满足nums[i] + nums[j] >= lower && nums[i] + nums[j] <= upper,那么数对(j,i)也满足,所以在结果上这两个数组是等价的,但由于题目要求只要(i,j),所以取其中一半即可,也就是我们可以忽略对原数组排序后下标的改变,保证只计入(i,j)或者(j,i)其中一种到答案中即可。所以我们可以设置每一次二分查找的区间为[ 0 , j - 1] (我这里采用的是开区间写法,所以是 [ 0 , j ]),这样就可以保证只计入(i,j)或者(j,i)。
class Solution:def countFairPairs(self, nums: List[int], lower: int, upper: int) -> int:res = 0n = numsn.sort()for i in range(len(n)):x = n[i]left = -1right = iwhile left + 1 < right:mid = (left + right) // 2if n[mid] + x < lower:left = midelse:right = midp1 = rightleft = -1right = iwhile left + 1 < right:mid = (left + right) // 2if n[mid] + x < upper + 1:left = midelse:right = midres += (right - p1)return res
2856
class Solution:def minLengthAfterRemovals(self, nums: List[int]) -> int:x = nums[len(nums) // 2]left = -1right = len(nums)while left + 1 < right:mid = (left + right) // 2if nums[mid] < x:left = midelse:right = midp1 = rightleft = -1right = len(nums)while left + 1 < right:mid = (left + right) // 2if nums[mid] < x + 1:left = midelse:right = midres = right - p1return max(res * 2 - len(nums), len(nums) % 2)
相关文章:
Leetcode刷题-二分查找
灵神的二分视频:二分查找 红蓝染色法_哔哩哔哩_bilibili 34 class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:right len(nums) - 1left 0res [-1,-1]mid int((right left)/2)while right > left:if nums[mid] < …...
凭证Account Assignment的校验(FAGL_VALIDATE)
本文主要介绍在S4 HANA OP中凭证Account Assignment的校验配置。具体请参照如下内容: 目录 1. 定义Account Assignment校验策略(FAGL_VALIDATE) 1.1 Derivation Rule 1.2 Assignment 1.3 Initialize 1.4 Enhancement 2. 分配Account Assignment校验策略给公司…...
【20】Word:小许-质量管理-论文❗
目录 题目 NO1.2.3.4.5 NO6.7 NO8 NO9 NO10.11 题目 NO1.2.3.4.5 另存为“Word.docx”文件在考生文件夹下,F12Fn是另存为的作用布局→页面设置对话框→纸张:大小A4→页边距:上下左右不连续ctrl选择除表格外的所有内容→开始→字体对…...
二十八、Qos服务质量
Qos服务质量 一、产生原因 Resources也不是万能的,使用一段时间后,资源总量可能会超过接节点配置。 根据这个情况,我们可以设置,清除资源。给pod配置,按顺序删除 二、服务质量QoS分类 Guaranteed:最高服务质量(保证),当宿主机内存不够时,会先kill掉QoS为BestEffort…...
Flutter 改完安卓 applicationId 后App 闪退问题。
一、问题 当我们项目创建完,想 build.gradle 改 applicationId 的时候,再次执行的时候可能会出现 app 闪退问题, 控制台不显示任何错误提示 也不出现 Exit 停止运行的情况。(像下方这样, 而 app 只是在模拟器中一闪而…...
es 3期 第25节-运用Rollup减少数据存储
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...
小菜鸟系统学习Python第三天
1.优先级问题: 结论: 幂运算>正负号>加减乘除和整除>比较运算符>逻辑运算符 2.三元运算符 3.assert断言:抛出AssertionError异常 4.for循环 4. 5.break和continue...
七.网络模型
最小(支撑)树问题 最小部分树求解: 破圈法:任取一圈,去掉圈中最长边,直到无圈; 加边法:取图G的n个孤立点{v1,v2,…, vn }作为一个支撑图,从最短…...
1170 Safari Park (25)
A safari park(野生动物园)has K species of animals, and is divided into N regions. The managers hope to spread the animals to all the regions, but not the same animals in the two neighboring regions. Of course, they also realize that t…...
数字图像处理:实验五
uu们!大家好,欢迎来到数字图像处理第五章节内容的学习,在本章中有关空间滤波的理论学习是十分重要的,所以建议大家要去用心的学习本章,在之后的传感器的相关图像采集时,不可避免的会有噪声等的影响…...
2024我在csdn走过的路
自我介绍 ✏️博客名✏️: zy_destiny 🌸粉丝数🌸: 1万 🌿擅长领域🌿: 人工智能 👀欢迎访问👀: 我的主页 我的2024 回顾下2024年,起点要从去年写…...
网络安全等级保护基本要求——等保二级
《信息安全技术网络安全等级保护基本要求》GB/T22239-2019 7.1 安全通用要求 7.1.1 安全物理环境 7.1.1.1 物理位置选择 本项要求包括: a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内;b) 机房场地应避免设在建筑物的顶层或地下室,否则应加…...
了解 .mgJSON 文件
.mgJSON (Motion Graphics JSON)是一个基于标准 JSON 格式的文件扩展名,专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流,能够精确描述动画、物体变换、图形效果等。 .mgJSON 文件通过层级…...
django使用踩坑经历
DRF 使用drf获取序列化后的id visitor_serializer VisitorSaveSerializer(data{…}) if visitor_serializer.is_valid():visitor visitor_serializer.save() visitor_id visitor.pkpostgrepsql踩坑 django使用postgrepsql,使用聚合函数如:sum 等,被…...
【数据分享】1929-2024年全球站点的逐年最低气温数据(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...
Leetcode:2239
1,题目 2,思路 循环遍历满足条件就记录,最后返回结果值 3,代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…...
【FPGA】MIPS 12条整数指令【1】
目录 修改后的仿真结果 修改后的完整代码 实现bgtz、bltz、jalr 仿真结果(有问题) bltz------并未跳转,jCe? 原因是该条跳转语句判断的寄存器r7,在该时刻并未被赋值 代码(InstMem修改前) i…...
Halcon 3D基础知识及常用函数
一、基本概念 1、点云(Point Cloud) 点云是一组3D数据点,每个点由笛卡尔坐标系或其他坐标系中的一个三维坐标表示,它被认为是一组非结构化的三维点,象征着三维物体的几何形状。点云是一种简单、完整的数据结构&#…...
贵金属铟,钌,铱,钯铂铑回收工艺详解
Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而专门开发的螯合树脂。 Tulsimer CH-95S 是一款拥有聚乙烯异硫脲官能基的大孔树脂,这种树脂对汞有极高的选择性。它也选 择其他的贵金属,如黄金,铂金和其他铂金族金属。…...
AutoSAR CP RTE 规范核心内容简介以及BswScheduler工作原理解析
一、Autosar CP RTE规范核心内容简介 本规范详细介绍了AUTOSAR运行时环境(RTE)和基本软件调度器(BswScheduler)的软件规范。 研究背景 背景介绍: 这篇文章的研究背景是AUTOSAR(Automotive Open System Architecture…...
Krita AI Diffusion插件企业级部署与运维指南:从零搭建稳定AI绘画工作流
Krita AI Diffusion插件企业级部署与运维指南:从零搭建稳定AI绘画工作流 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址…...
黑丝空姐-造相Z-Turbo极限测试:挑战复杂网络环境下的模型服务稳定性
黑丝空姐-造相Z-Turbo极限测试:挑战复杂网络环境下的模型服务稳定性 最近在折腾一个很有意思的项目,需要频繁调用一个部署在星图GPU平台上的AI图像生成服务,也就是大家可能听说过的“黑丝空姐-造相Z-Turbo”。这个模型生成特定风格人像的效果…...
Qwen2.5-7B-Instruct问题解决:显存溢出怎么办?内置专属报错与清理方案
Qwen2.5-7B-Instruct问题解决:显存溢出怎么办?内置专属报错与清理方案 1. 问题背景与核心挑战 Qwen2.5-7B-Instruct作为70亿参数规模的旗舰级大模型,在专业级文本交互场景中展现出卓越性能的同时,也对硬件资源提出了更高要求。其…...
FLUX.1-dev像素生成器效果对比:不同采样器(Euler/DPM++)像素质感差异
FLUX.1-dev像素生成器效果对比:不同采样器(Euler/DPM)像素质感差异 1. 像素幻梦创意工坊简介 像素幻梦 (Pixel Dream Workshop) 是基于FLUX.1-dev扩散模型构建的专业像素艺术生成工具。它采用独特的16-bit像素工坊视觉设计,为创…...
Qwen3-0.6B-FP8在单片机开发中的启发:生成嵌入式C语言代码片段
Qwen3-0.6B-FP8在单片机开发中的启发:生成嵌入式C语言代码片段 1. 引言 如果你是一位单片机开发者,可能经常遇到这样的场景:面对一个新的外设模块,或者要实现一个不太熟悉的功能,第一反应就是去翻数据手册、找官方例…...
Windows高DPI缩放导致Qt界面崩了?手把手教你用‘高DIP缩放替代’快速修复
Windows高DPI缩放导致Qt界面崩溃?三步搞定“高DPI缩放替代”修复方案 最近几年4K显示器价格越来越亲民,很多用户都升级到了高分辨率屏幕。但随之而来的一个常见问题就是:一些老旧的Qt程序在高分屏上运行时,界面元素变得错乱不堪—…...
万象熔炉 | Anything XL快速上手:拖拽上传参考图进行ControlNet扩展
万象熔炉 | Anything XL快速上手:拖拽上传参考图进行ControlNet扩展 安全声明:本文仅讨论本地化部署的AI图像生成技术,所有数据处理均在用户本地设备完成,不涉及任何网络传输或云端服务,确保数据隐私和安全。 1. 工具简…...
示波器 | 光收发模块眼图测试
前言数字通信与光网络技术高速发展,光收发模块作为光电信号转换的核心器件,已成为数据中心、5G 通信、光纤传输等领域的关键基础组件,其信号质量、传输稳定性与可靠性影响着整个通信系统的运行效率与安全。眼图与误码率作为评估光模块性能的重…...
CANopen网络管理NMT避坑指南:从心跳报文0x7F看懂节点状态与PDO失效原因
CANopen网络管理NMT实战诊断:从心跳报文解码到PDO失效精准定位 当你在调试一个由二十多个CANopen节点组成的自动化产线时,突然发现3号工位的传感器数据停止更新——这种场景对工业现场工程师来说再熟悉不过。更棘手的是,CAN分析仪上不断刷新的…...
中兴B860AV3.2-T芯片型号鉴别与刷机固件匹配全攻略
1. 中兴B860AV3.2-T芯片型号鉴别的重要性 最近在折腾中兴B860AV3.2-T盒子时,我发现一个特别容易踩坑的地方——这盒子居然有两种不同的处理器芯片!一种是S905L3B,另一种是S905L3SB。刚开始我也没太在意这个区别,结果刷机时直接翻车…...
