当前位置: 首页 > news >正文

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刷题-二分查找

灵神的二分视频&#xff1a;二分查找 红蓝染色法_哔哩哔哩_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的校验配置。具体请参照如下内容&#xff1a; 目录 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”文件在考生文件夹下&#xff0c;F12Fn是另存为的作用布局→页面设置对话框→纸张&#xff1a;大小A4→页边距&#xff1a;上下左右不连续ctrl选择除表格外的所有内容→开始→字体对…...

二十八、Qos服务质量

Qos服务质量 一、产生原因 Resources也不是万能的,使用一段时间后,资源总量可能会超过接节点配置。 根据这个情况,我们可以设置,清除资源。给pod配置,按顺序删除 二、服务质量QoS分类 Guaranteed:最高服务质量(保证),当宿主机内存不够时,会先kill掉QoS为BestEffort…...

Flutter 改完安卓 applicationId 后App 闪退问题。

一、问题 当我们项目创建完&#xff0c;想 build.gradle 改 applicationId 的时候&#xff0c;再次执行的时候可能会出现 app 闪退问题&#xff0c; 控制台不显示任何错误提示 也不出现 Exit 停止运行的情况。&#xff08;像下方这样&#xff0c; 而 app 只是在模拟器中一闪而…...

es 3期 第25节-运用Rollup减少数据存储

#### 1.Elasticsearch是数据库&#xff0c;不是普通的Java应用程序&#xff0c;传统数据库需要的硬件资源同样需要&#xff0c;提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库&#xff0c;不是关系型数据库&#xff0c;不具备严格的ACID事务特性&#xff…...

小菜鸟系统学习Python第三天

1.优先级问题: 结论: 幂运算>正负号>加减乘除和整除>比较运算符>逻辑运算符 2.三元运算符 3.assert断言:抛出AssertionError异常 4.for循环 4. 5.break和continue...

七.网络模型

最小(支撑)树问题 最小部分树求解&#xff1a; 破圈法&#xff1a;任取一圈&#xff0c;去掉圈中最长边&#xff0c;直到无圈&#xff1b; 加边法&#xff1a;取图G的n个孤立点&#xff5b;v1&#xff0c;v2&#xff0c;…&#xff0c; vn }作为一个支撑图&#xff0c;从最短…...

1170 Safari Park (25)

A safari park&#xff08;野生动物园&#xff09;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们&#xff01;大家好&#xff0c;欢迎来到数字图像处理第五章节内容的学习&#xff0c;在本章中有关空间滤波的理论学习是十分重要的&#xff0c;所以建议大家要去用心的学习本章&#xff0c;在之后的传感器的相关图像采集时&#xff0c;不可避免的会有噪声等的影响&#xf…...

2024我在csdn走过的路

自我介绍 ✏️博客名✏️&#xff1a; zy_destiny &#x1f338;粉丝数&#x1f338;&#xff1a; 1万 &#x1f33f;擅长领域&#x1f33f;&#xff1a; 人工智能 &#x1f440;欢迎访问&#x1f440;&#xff1a; 我的主页 我的2024 回顾下2024年&#xff0c;起点要从去年写…...

网络安全等级保护基本要求——等保二级

《信息安全技术网络安全等级保护基本要求》GB/T22239-2019 7.1 安全通用要求 7.1.1 安全物理环境 7.1.1.1 物理位置选择 本项要求包括&#xff1a; a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内;b) 机房场地应避免设在建筑物的顶层或地下室&#xff0c;否则应加…...

了解 .mgJSON 文件

.mgJSON &#xff08;Motion Graphics JSON&#xff09;是一个基于标准 JSON 格式的文件扩展名&#xff0c;专门用于存储和交换与动态图形、动画和多媒体应用相关的数据。该格式支持静态和动态数据流&#xff0c;能够精确描述动画、物体变换、图形效果等。 .mgJSON 文件通过层级…...

django使用踩坑经历

DRF 使用drf获取序列化后的id visitor_serializer VisitorSaveSerializer(data{…}) if visitor_serializer.is_valid():visitor visitor_serializer.save() visitor_id visitor.pkpostgrepsql踩坑 django使用postgrepsql&#xff0c;使用聚合函数如:sum 等&#xff0c;被…...

【数据分享】1929-2024年全球站点的逐年最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…...

Leetcode:2239

1&#xff0c;题目 2&#xff0c;思路 循环遍历满足条件就记录&#xff0c;最后返回结果值 3&#xff0c;代码 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 仿真结果&#xff08;有问题&#xff09; bltz------并未跳转&#xff0c;jCe&#xff1f; 原因是该条跳转语句判断的寄存器r7&#xff0c;在该时刻并未被赋值 代码&#xff08;InstMem修改前&#xff09; i…...

Halcon 3D基础知识及常用函数

一、基本概念 1、点云&#xff08;Point Cloud&#xff09; 点云是一组3D数据点&#xff0c;每个点由笛卡尔坐标系或其他坐标系中的一个三维坐标表示&#xff0c;它被认为是一组非结构化的三维点&#xff0c;象征着三维物体的几何形状。点云是一种简单、完整的数据结构&#…...

贵金属铟,钌,铱,钯铂铑回收工艺详解

Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而专门开发的螯合树脂。 Tulsimer CH-95S 是一款拥有聚乙烯异硫脲官能基的大孔树脂&#xff0c;这种树脂对汞有极高的选择性。它也选 择其他的贵金属&#xff0c;如黄金&#xff0c;铂金和其他铂金族金属。…...

AutoSAR CP RTE 规范核心内容简介以及BswScheduler工作原理解析

一、Autosar CP RTE规范核心内容简介 本规范详细介绍了AUTOSAR运行时环境&#xff08;RTE&#xff09;和基本软件调度器&#xff08;BswScheduler&#xff09;的软件规范。 研究背景 背景介绍: 这篇文章的研究背景是AUTOSAR&#xff08;Automotive Open System Architecture…...

《数据挖掘》- 房价数据分析

这里写目录标题 采用的技术1. Python编程语言2. 网络爬虫库技术点对比与区别项目技术栈的协同工作流程 代码解析1. 导入头文件2. 读取原始数据3. 清洗数据4. 数据分割4.1 统计房屋信息的分段数量4.2 将房屋信息拆分为独立列4.3 处理面积字段4.4 删除原始房屋信息列 5. 可视化分…...

CSS 性能优化

目录 CSS 性能优化CSS 提高性能的方法1. 选择器优化1.1 选择器性能原则1.2 选择器优化示例 2. 重排&#xff08;Reflow&#xff09;和重绘&#xff08;Repaint&#xff09;优化2.1 重排和重绘的概念2.2 触发重排的操作2.3 触发重绘的操作2.4 优化重排和重绘的方法 3. 资源优化3…...

RNN和CNN使用场景区别

RNN&#xff08;循环神经网络&#xff09;和 CNN&#xff08;卷积神经网络&#xff09;是深度学习中两种核心架构&#xff0c;它们的使用场景主要取决于数据结构和任务需求。以下是两者的关键区别及典型应用场景&#xff1a; 核心差异对比 维度RNN&#xff08;循环神经网络&a…...

VueScan:全能扫描,高清输出

在数字化办公和图像处理的领域&#xff0c;扫描仪扮演着不可或缺的角色。无论是文档的数字化存档、照片的高清复制&#xff0c;还是创意项目的素材采集&#xff0c;一款性能卓越、操作便捷的扫描软件能大幅提升工作效率和成果质量。VueScan正是这样一款集多功能于一身的扫描仪软…...

C#里与嵌入式系统W5500网络通讯(3)

有与W5500通讯时,需要使用下面的寄存器: PHYCFGR (W5500 PHY Configuration Register) [R/W] [0x002E] [0b10111XXX] PHYCFGR configures PHY operation mode and resets PHY. In addition, PHYCFGR indicates the status of PHY such as duplex, Speed, Link. 这张表格详细…...

Unity中的MonoSingleton<T>与Singleton<T>

1.MonoSingleton 代码部分 using UnityEngine;/// <summary> /// MonoBehaviour单例基类 /// 需要挂载到GameObject上使用 /// </summary> public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> {private static T _instance;…...

Qt OpenGL 实现交互功能(如鼠标、键盘操作)

一、基本概念 1. Qt 事件系统与 OpenGL 渲染的协同 Qt 提供了完善的事件处理机制,而 OpenGL 负责图形渲染。交互的实现本质上是: 事件捕获:通过 Qt 的事件系统(如 mousePressEvent、keyPressEvent)捕获用户输入。 状态更新:根据输入事件更新场景状态(如相机位置、模型…...

OpenCV——Mac系统搭建OpenCV的Java环境

这里写目录标题 一、源码编译安装1.1、下载源码包1.2、cmake安装1.3、java配置1.4、测试 二、Maven引入2.1、添加Maven依赖2.2、加载本地库 一、源码编译安装 1.1、下载源码包 官网下载opencv包&#xff1a;https://opencv.org/releases/ 以4.6.0为例&#xff0c;下载解压后&…...

【设计模式-4.8】行为型——中介者模式

说明&#xff1a;本文介绍行为型设计模式之一的中介者模式 定义 中介者模式&#xff08;Mediator Pattern&#xff09;又叫作调节者模式或调停者模式。用一个中介对象封装一系列对象交互&#xff0c;中介者使各对象不需要显式地互相作用&#xff0c;从而使其耦合松散&#xf…...

JavaSec-SSTI - 模板引擎注入

简介 SSTI(Server Side Template Injection)&#xff1a;模板引擎是一种通过将模板中的占位符替换为实际数据来动态生成内容的工具&#xff0c;如HTML页面、邮件等。它简化了视图层的设计&#xff0c;但如果未对用户输入进行有效校验&#xff0c;可能导致安全风险如任意代码执行…...