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

coding ability 展开第五幕(二分查找算法)超详细!!!!

.在这里插入图片描述

.

文章目录

  • 前言
  • 二分查找
  • 搜索插入的位置
    • 思路
  • x的平方根
    • 思路
  • 山脉数组的峰顶索引
    • 思路
  • 寻找旋转排序数组中的最小值
    • 思路
  • 总结

前言

本专栏上篇博客已经把滑动指针收尾啦
现在还是想到核心——一段连续的区间,有时候加上哈希表用起来很爽
今天我们来学习新的算法知识——二分查找,相信大家都不陌生
二分查找,怎么说呢,清晰了解之后,其实代码就几行
话不多说,跟我一起来瞅瞅吧

二分查找

首先我们来学习两道经典例题,有了例题和板子,才能更好的扩展和延伸,应对不同的场景
二分查找
在这里插入图片描述
其实乍一看,直接遍历一遍不就好了吗,但是今天我们的主题是二分查找
所以这一题来学习一下二分的第一个最简单的板子
解法一就是暴力循环找目标值
解法二:
在这里插入图片描述
其实核心就是二段性,只要给的数据有二段性,我们就能用二分
最朴素的就是不断的找 mid 然后判断 ,再进到新的区间 ,不断二分
看看这题代码,其实大家应该都会写的,最基础的二分板子

class Solution 
{
public:int search(vector<int>& nums, int target){int left = 0, right = nums.size() - 1;while(left <= right){int mid = left + (right - left) / 2;if(target > nums[mid])left = mid + 1;else if( target < nums[mid])right = mid - 1;elsereturn mid;}return -1;}
};

可能觉得二分就这么简单吗?? 不不不,还有另外两个板子,会有点麻烦
在排序数组中查找元素的第一个和最后一个位置
在这里插入图片描述
这题能把另外两个二分的板子完美诠释出来,在做这一题之前,我们先来了解两种情况
前面我们的朴素版本就是 大于 等于 小于 三种情况。
现在我们来想想 左边区间是小于目标值 右边区间是大于等于目标值 两种情况怎么处理
也就是找区间的左端点,如下图:
在这里插入图片描述
相比于前面的朴素板子,有很多细节差别
—left 和 right 的更新, 当 x 小于目标值时,那就是左边区间,这时候left——mid的区间都是不满足条件的,因为左边区间都是小于目标值,所以 left 要更新为 mid+1当 x 大于等于目标值时,因为我们右边区间默认是大于等于目标值的区间,我们的 right 如果更新为 mid - 1,有可能当前的mid就是要找寻的点所以 right 应该更新为 mid
—循环条件 当 left == right 时,就是我们要找的答案,这个时候如果循环条件为 left<=right ,会进入死循环
mid的取值,看下图,假设就剩下两个值,目标值是left先用第一种方法 mid 就是 left,这个时候 x >= 目标值所以right == mid刚好left 和 right 相等,找到目标值,如果取用第二种方法取mid为right,这个时候 x >= 目标值,right 和 mid 相等,然后left还是小于right,死循环,所以当我们把区间分成左边完全小于目标值,右边大于等于目标值的时候,就用第一种
在这里插入图片描述
左端点结束了,接下来就是右端点了
也就是左边区间小于等于目标值,右边区间完全大于目标值
在这里插入图片描述
需要注意的细节还是
—left 和 right 的更新 ,当 x > 目标值的时候 right更新为 mid - 1,因为右边区间都是大于目标值的, 当 x <= 目标值的时候left更新为mid,因为左边区间小于等于目标值,可能mid的位置就是目标值
—left < right left 不能等于 right
—还是 mid 的取值问题,再来回到这个图在这里插入图片描述
我们先使用第一种,当right为目标值时,更新 mid 是刚好为 left,这个时候left更新为mid,right还是大于left,陷入死循环,使用第二种的话,更新mid为rightleft更新为mid也就是right,left和right相等,跳出循环,找到目标值。所以当区间分成左区间小于等于,右区间大于时,用第二种取mid

好了,找左右端点我们都学会了这题,也是能稳稳拿下了
题目要求找到目标值的左右端点,那我们来一次找左端点的操作,再来一次右端点的操作就好啦,话不多说,上代码

class Solution 
{
public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size() == 0)return{-1, -1};int begin = 0;int left = 0, right = nums.size() - 1;while(left < right)   //  找左端点{int mid = left + (right - left) / 2;if(nums[mid] < target)left = mid + 1;elseright = mid;}if(nums[left] != target) return {-1, -1};begin = left;right = nums.size() - 1;while(left < right)  //  找右端点{int mid = left + (right - left + 1) / 2;if(nums[mid] > target)right = mid - 1;elseleft = mid;}return {begin, right};}
};

搜索插入的位置

在这里插入图片描述

思路

这题看来就是左区间小于,又区间大于等于,二段性就分好啦
假设插入的坐标是x,那么x左边都是小于目标值的,右区间都是大于等于目标值的
我们可以用查询左端点的板子,直接返回找到的左端点
还有一种特殊情况就是,数据插入在末尾,原本的数据全部小于目标值的,就把这一点处理一下就好了
话不多说,上代码

class Solution 
{
public:int searchInsert(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] < target)  //  特殊情况,所有数据都比目标值小left = mid + 1;		//	返回right + 1elseright = mid;}if(nums[left] < target)return left + 1;elsereturn right;} 
};

x的平方根

在这里插入图片描述

思路

本题第一种思路就是暴力枚举就好了,0-x/2区间一个一个枚举,挺简单的思路,就不多赘述了
第二种思路就是二分,我们可以用右端点的板子,设定 i * i <= x为条件,进行二分,最终返回的就是小于等于算数平方根的下标, 话不多说,上代码

class Solution 
{
public:int mySqrt(int x) {if(x == 0)return 0;long long right = x / 2, left = 1;while(left < right){long long  mid = left + (right - left + 1) / 2; // 查询右端点取中点处理if(mid * mid > (long long)x)right = mid - 1;elseleft = mid;}return left;        }
};

其实核心就是找到数据的二段性,然后看情况选择二分查找左端点还是右端点就好啦

山脉数组的峰顶索引

在这里插入图片描述

思路

题目的意思是找到山脉的顶峰,第一种思路当然就是暴力查找了,找到最大值就行
第二种思路就是我们可以把山脉分成两份,二段性不就来了嘛,一段单调增,一段单调减
然后根据情况查找左端点或者右端点就好啦
我们把左区间设定为递增到山顶的区间,右区间就是下山的区间
这个时候应该用我们的查询右端点的板子,然后我们的判断条件可以设为 arr[mid] > arr[mid - 1]
话不多说,看代码

class Solution 
{
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 1, right = arr.size() - 2;while(left < right){int mid = left + (right - left + 1) / 2;if(arr[mid] > arr[mid - 1]) left = mid;elseright = mid - 1;}return left;}
};

当然,也可以用查询左端点的板子来写

class Solution 
{
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 1, right = arr.size() - 2;while(left < right){int mid = left + (right - left) / 2;if(arr[mid] > arr[mid + 1]) right = mid;elseleft = mid + 1;}return left;}
};

其实,核心就是找到二段性,然后再找判断条件

寻找旋转排序数组中的最小值

在这里插入图片描述

思路

题目的二段性意思已经写在脸上了,如图
在这里插入图片描述
我们直接设定右端点为 x ,然后上查找左端点的板子,这个x用来判断区间条件
就是两步,二段性,区间条件,话不多说,上代码

class Solution 
{
public:int findMin(vector<int>& nums) {int left = 0, right = nums.size() - 1;int x = nums[right];while(left < right){int mid = left + (right - left) / 2;if(nums[mid] > x) //  当前值大于  x  表示在左区间left = mid + 1;   //  更新leftelseright = mid;}return nums[left];}
};

总结

二分查找是一种高效的搜索算法,核心在于利用数据的二段性将区间不断二分,快速定位目标。本文通过经典例题解析了三种常见场景的二分应用:

  1. 基本查找:适用于有序数组,通过比较中间值与目标调整区间,时间复杂度O(logN)。
  2. 边界查找
    • 左边界:右区间≥目标,循环条件left<right,mid取左中点,更新策略确保不遗漏可能解。
    • 右边界:左区间≤目标,mid取右中点,避免死循环。
  3. 特殊场景:如山脉数组峰值、旋转数组最小值,通过分析数据规律(如单调性变化点)构造二段性条件。

关键点

  • 循环条件选择(left<rightleft<=right)。
  • mid计算方式(防止溢出)与边界更新策略。
  • 处理目标不存在或越界的特殊情况。

掌握二分查找的核心在于理解区间划分逻辑,灵活选择模板,结合问题特点设计判断条件,从而高效解决复杂查找问题

今天的内容就到这里啦,不要走开小编持续更新中~~~

在这里插入图片描述

相关文章:

coding ability 展开第五幕(二分查找算法)超详细!!!!

. . 文章目录 前言二分查找搜索插入的位置思路 x的平方根思路 山脉数组的峰顶索引思路 寻找旋转排序数组中的最小值思路 总结 前言 本专栏上篇博客已经把滑动指针收尾啦 现在还是想到核心——一段连续的区间&#xff0c;有时候加上哈希表用起来很爽 今天我们来学习新的算法知识…...

存算分离是否真的有必要?从架构之争到 Doris 实战解析

引言&#xff1a;一场关于 “存与算” 的N年辩论 在数据库与大数据领域&#xff0c;“存算一体” 与 “存算分离” 的架构之争从未停歇。有人质疑&#xff1a;“存算分离真的有必要吗&#xff1f;本地盘性能难道不够&#xff1f;” 答案并非非黑即白 —— 技术选型的关键&…...

卸载conda,poetry常用命令,vscode使用poetry虚拟环境

~/miniconda3/bin/conda init bash ~/miniconda3/bin/conda init zsh conda info 查看当前环境的配置信息 conda install package-name conda install package-nameversion 安装依赖包 conda uninstall package-nameversion 卸载依赖包 conda update package-name 更新依赖包…...

【总结】Pytest vs Behave,BDD 测试框架哪家强?

引言 在测试驱动开发(TDD)和行为驱动开发(BDD)流行的今天&#xff0c;Pytest和 Behave 成为了 Python 生态中最常见的自动化测试框架。那么&#xff0c;究竟该选择哪一个&#xff1f;它们各自有哪些优缺点&#xff1f;本篇文章将为你全面解析&#xff01; 1. 什么是 Pytest&a…...

INT202 Complexity of Algroithms 算法的复杂度 Pt.2 Search Algorithm 搜索算法

文章目录 1.树的数据结构1.1 有序数据(Ordered Data)1.1.1 有序字典&#xff08;Ordered Dictonary&#xff09;1.1.1.1 排序表&#xff08;Sorted Tables&#xff09; 1.2 二分查找&#xff08;Binary Search&#xff09;1.2.1 二分查找的时间复杂度 1.3 二叉搜索树&#xff0…...

springmvc中使用interceptor拦截

HandlerInterceptor 是Spring MVC中用于在请求处理之前、之后以及完成之后执行逻辑的接口。它与Servlet的Filter类似&#xff0c;但更加灵活&#xff0c;因为它可以访问Spring的上下文和模型数据。HandlerInterceptor 常用于日志记录、权限验证、性能监控等场景。 ### **1. 创…...

C++编译汇编八股总结

汇编的四个阶段&#xff1f; 预编译&#xff08;预处理&#xff09;&#xff1a; 预编译是源代码在编译之前进行的一些处理&#xff0c;主要包括宏定义展开、条件编译指令处理和头文件展开等。 编译&#xff1a; 编译器根据源代码的语法和语义规则&#xff0c;将源代码进行词法…...

基于ArcGIS和ETOPO-2022 DEM数据分层绘制全球海陆分布

第〇部分 前言 一幅带有地理空间参考、且包含海陆分布的DEM图像在研究区的绘制中非常常见&#xff0c;本文将实现以下图像的绘制 关键步骤&#xff1a; &#xff08;1&#xff09;NOAA-NCEI官方下载最新的ETOPO-2022 DEM数据 &#xff08;2&#xff09;在ArcGIS&#xff08;…...

【LangChain入门 4 Prompts组件】提示词追加示例 FewShotPromptTemplate和示例选择器ExampleSelector

文章目录 一、提示词追加示例 FewShotPromptTemplate二、使用示例选择器 example_selector三、关键类介绍3.1 PromptTemplate3.2 FewShotPromptTemplate3.3 SemanticSimilarityExampleSelector 提示词中包含交互样本的作用是为了帮助模型更好地理解用户的意图&#xff0c;从而更…...

Android Compose 切换按钮深度剖析:从源码到实践(六)

Android Compose 切换按钮深度剖析&#xff1a;从源码到实践 一、引言 在现代 Android 应用开发中&#xff0c;用户交互体验至关重要。切换按钮&#xff08;Toggle Button&#xff09;作为一种常见的交互组件&#xff0c;允许用户在两种状态之间进行切换&#xff0c;例如开 /…...

挖矿病毒应急响应处置手册

挖矿病毒应急响应处置手册 文章目录 挖矿病毒应急响应处置手册0x00 概述0x01 了解基本情况1.1 如何发现1.1.1 异常外联1.1.2 主机异常1.2 事件的时间节点1.3 临时处置情况1.4 网络拓扑情况0x02 判断是否属于挖矿2.1 属于挖矿2.1.1 根据告警和流量信息初步判断挖矿类型2.1.2 win…...

VSCode - 查看 PDF 文件

VSCode 原生并不支持 查看 PDF 文件&#xff0c;需要额外安装插件。 这里我使用 vscode-pdf&#xff0c;效果还不错&#xff0c;有需要的可以搜索安装。 效果&#xff1a; 2025-03-18&#xff08;二&#xff09;...

vue3:八、登录界面实现-忘记密码

该文章实现登录界面的忘记密码功能&#xff0c;点击忘记密码文本&#xff0c;打开dialog对话框 一、页面效果 加入忘记密码&#xff0c;在记住密码的同一行中&#xff0c;实现flex-between 二、对话框实现 1、新建组件页面 2、引入dialog组件到组件页面 参考路径 Dialog 对…...

Python Django入门(创建其他网页)

在本章中&#xff0c;你将学习如何使用 Django&#xff08;http://djangoproject.com/ &#xff09;来开发一个名为“学习笔记”&#xff08;Learning Log&#xff09;的项目&#xff0c;这是一个在线日志系统&#xff0c;让你能够记录所学习的有关特定主题的知识。 我们将为这…...

Windows安装MySQL5.7.26教程图解

Windows安装MySQL5.7.26教程图解 零、准备工作 下载MySQL软件包 ①、官网下载:程序员 常用 软件汇总 - 超人那个超~ - 博客园 ②、百度云下载:链接:百度网盘 请输入提取码 提取码:chao 一、彻底删除MySQL 从电脑里卸载旧的MYSQL数据库服务时,首先先在WINDOWS服务里…...

FreGS: 3D Gaussian Splatting with Progressive Frequency Regularization论文学习记录

3. 提出的方法 我们提出了FreGS&#xff0c;一种具有渐进频率正则化的新型3D高斯溅射方法&#xff0c;它是首个从频率角度缓解3D高斯溅射过度重建问题的方法。图2展示了FreGS的概览。第3.1节简要介绍了原始的3D高斯溅射方法&#xff08;3D-GS&#xff09;&#xff0c;包括高斯…...

汽车行业敏捷开发实践:基于Atlassian工具链的全流程解决方案(Jira、Confluence、Jira Service Management等)

直播回顾 在数字化浪潮席卷全球的今天&#xff0c;各行各业都在积极寻求转型与突破&#xff0c;汽车行业也不例外。 近日&#xff0c;在“Atlassian助力企业破局&#xff1a;数字化协作与全球市场拓展”的线上直播活动中&#xff0c;龙智资深顾问张晓乐深入探讨了汽车行业数字…...

遇到一个奇怪问题,页面请求不到后端

背景 页面有两个请求,第一个接口获取令牌,第二个接口根据令牌去获取数据, 突然发现获取数据接口校验令牌的时候一直报错 而且报错的时候服务器没有获取令牌请求 而且发现偶尔是正常的,正常的发现服务器ip和异常的不一样,同事定位可能是域名解析问题 解决 最后定位是腾讯cdn解…...

【C++】:C++11详解 —— 线程库

目录 线程库&#xff08;thread&#xff09; 线程对象的构造函数 构造函数的用法示例 参数传递的关键细节 构造函数的异常行为 线程对象的使用 互斥量库&#xff08;mutex&#xff09; 互斥量类型 锁管理类&#xff08;RAII 封装&#xff09; 条件变量&#xff08;…...

招聘面试季--一文顿悟,Java中字节流和字符流的区别及使用场景上的差异

‌一、核心区别‌ ‌特性‌‌字节流‌‌字符流‌‌数据单位‌以字节&#xff08;8-bit&#xff09;为单位处理数据&#xff08;如0xA1&#xff09;以字符&#xff08;16-bit Unicode&#xff09;为单位处理数据&#xff08;如A, 你&#xff09;‌基类‌InputStream / OutputSt…...

在 ARM 嵌入式 Linux 下使用 C/C++ 实现 MQTT

在 ARM 嵌入式 Linux 下使用 C/C 实现 MQTT 通信是一个常见的需求&#xff0c;尤其是在资源受限的环境中。以下是一个详细的教程&#xff0c;使用 Eclipse Paho C Client 库来实现 MQTT 客户端。 1. 安装 Eclipse Paho C Client 库 Eclipse Paho C Client 是一个轻量级的 MQTT…...

C++20 中 `constexpr` 的强大扩展:算法、工具与复数库的变革

文章目录 一、constexpr 在 <algorithm> 中的应用1. 编译时排序2. 编译时查找 二、constexpr 在 <utility> 中的应用1. 编译时交换2. 编译时条件交换 三、constexpr 在 <complex> 中的应用1. 编译时复数运算 四、总结 C20 对 constexpr 的增强是其最引人注目…...

C++ 介绍STL底层一些数据结构

c 标准模板库中&#xff0c;set和map的底层实现通常基于红黑树&#xff0c;然们都是平衡二叉搜索树(Balanceed Binary Serach Tree&#xff09;的一种,这种结构保证了 插入&#xff0c;删除&#xff0c;查找的时间复杂度为O(log n)比普通二叉搜索树更高效。 set set<T>…...

算法2--两数相加

题目描述 解题思路 题目说的很详细了&#xff0c;也就是把每个数倒序写成链表进行输入&#xff0c;然后让你计算两个倒序数组的和&#xff0c;要保证跟预期的结果一样。 首先应该考虑的是两个数组的长度问题&#xff0c;对于链表的每一位进行加法运算&#xff0c;如果两个列表…...

Docker搭建Testlink教程

1.拉取镜像 打开终端输入命令&#xff1a; #拉取mariadb镜像 docker pull bitnami/mariadb #拉取testlink镜像 docker pull bitnami/testlink-archived 执行结果&#xff1a; 2.运行容器 打开终端输入命令&#xff1a; #创建容器网络 docker network create testlink #查…...

安卓7.0以上App抓包

安卓7.0以上App抓包 导出BurpSuite证书 设置本机IP的8080端口监听 证书转换 将这个der证书下载到kali上&#xff0c;并使用以下命令进行证书转换 openssl x509 -inform der -in cacert.der -out burp.pem openssl x509 -inform PEM -subject_hash_old -in burp.pem转换成功…...

CCBCISCN复盘

AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…...

【C++】八大常见的设计模式的实现与实践指南

目录 创建型模式 单例模式工厂方法模式抽象工厂模式 结构型模式 适配器模式装饰者模式代理模式 行为型模式 观察者模式策略模式命令模式 高级主题 现代C特性影响模式性能对比典型应用案例 设计模式分类 一、创建型模式 1. 单例模式&#xff08;Singleton&#xff09; 现代…...

OpenEMMA: 基于多模态大语言模型的端到端开源自动驾驶框架

OpenEMMA: 基于多模态大语言模型的端到端开源自动驾驶框架 创新点 OpenEMMA 将前置摄像头图像和车辆历史文本状态作为输入。驾驶任务被构建为视觉问答&#xff08;VQA&#xff09;问题&#xff0c;利用思维链推理来指导模型生成关键物体的详细描述、行为洞察和元驾驶决策。这…...

kali,NTFS,用户管理,文件共享,本地安全策略,计算机基础

kali更新源 vim /etc/apt/sources.list 优质源 中科大Kali镜像源​deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contribdeb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib​阿里云Kali镜像源​deb http://mirrors.aliyun.com…...

零基础上手Python数据分析 (7):Python 面向对象编程初步

写在前面 回顾一下,我们已经学习了 Python 的基本语法、数据类型、常用数据结构和文件操作、异常处理等。 到目前为止,我们主要采用的是 面向过程 (Procedural Programming) 的编程方式,即按照步骤一步一步地编写代码,解决问题。 这种方式对于简单的任务已经足够,但当程序…...

基于深度学习的皮肤癌智能检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

脚本一键式启动Nginx、Mysql、Redis

此脚本包含拉取镜像、数据卷挂载、容器启动三大部分&#xff0c;可一键式安装三大环境 新建一个depoy.sh文件在服务器上&#xff0c;然后复制以下内容。 给脚本文件添加执行权限 chmod x depoy.sh # 文件的当前目录下 如果需要修改数据库MYSQL密码和Reids密码 MYSQL_ROO…...

蓝桥杯备赛-DFS-有奖问答

问题描述 小蓝正在参与一个现场问答的节目。活动中一共有 3030 道题目, 每题只有答对和答错两种情况, 每答对一题得 1010 分&#xff0c;答错一题分数归零。 小蓝可以在任意时刻结束答题并获得目前分数对应的奖项&#xff0c;之后不能再答任何题目。最高奖项需要 100100 分, …...

[AI速读]CHISEL vs. SystemVerilog:用RISC-V核心对比两种硬件设计语言

在硬件设计领域,选择合适的语言对开发效率、维护成本和最终性能都至关重要。最近,一项研究对比了两种硬件描述语言——CHISEL(基于Scala的嵌入式语言)和传统的SystemVerilog,它们分别实现了同一款RISC-V核心(SweRV-EL2)。以下是关键发现和结论。 为什么选择CHISEL? CHI…...

PHP PSR(PHP Standards Recommendations)介绍

PHP PSR&#xff08;PHP Standards Recommendations&#xff09;是 PHP 社区制定的一系列标准化规范&#xff0c;旨在统一 PHP 代码的编写方式、接口设计和开发实践&#xff0c;以提高代码的可读性、可维护性和互操作性。以下是核心 PSR 标准的解读和具体使用方法&#xff1a; …...

字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破

目录 禹棋赢的背景与成就 主要成就 DAPO算法的技术细节 算法优势 禹棋赢的研究历程 关键时间节点 字节跳动的“Top Seed人才计划” 计划特点 小编总结 在大模型时代&#xff0c;经验不再是唯一的衡量标准&#xff0c;好奇心、执行力和对新技术的敏锐洞察力成为推动技术…...

Java并发编程面试题:锁(17题)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

各类神经网络学习:(四)RNN 循环神经网络(下集),pytorch 版的 RNN 代码编写

上一篇下一篇RNN&#xff08;中集&#xff09;待编写 代码详解 pytorch 官网主要有两个可调用的模块&#xff0c;分别是 nn.RNNCell 和 nn.RNN &#xff0c;下面会进行详细讲解。 RNN 的同步多对多、多对一、一对多等等结构都是由这两个模块实现的&#xff0c;只需要将对输入…...

【python】OpenCV—Hand Landmarks Detection

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数6、参考 更多有趣的代码示例&#xff0c;可参考【Programming】 1、功能描述 基于 opencv-python 和 mediapipe 实现手部关键点的检测&#xff08;无法检测出手&#xff0c;不过可以根据关键点的信息外…...

C++和标准库速成(十)——类型别名、类型定义、类型推断和标准库简介

目录 1. 类型别名2. 类型定义(不建议)3. 类型推断3.1 auto3.1.1 auto&3.1.2 auto*3.1.3 拷贝列表初始化和直接列表初始化 3.2 decltype 4. 标准库简介参考 1. 类型别名 类型别名为现有的类型声明提供新名称。可以将类型别名视为用于为现有类型声明引入同义词而无须创建新类…...

Java JMX 未授权访问漏洞分析与修复指南

#作者&#xff1a;张桐瑞 文章目录 一、漏洞背景二、漏洞描述三、漏洞影响四、修复方案1. 禁用远程JMX访问&#xff1a;2. 配置JMX访问权限&#xff1a; 一、漏洞背景 Java管理扩展&#xff08;Java Management Extensions&#xff0c;简称JMX&#xff09;是Java平台的管理和…...

挂谷问题与挂谷猜想:从平面转针到高维拓扑

挂谷问题与挂谷猜想&#xff1a;从平面转针到高维拓扑 目录 挂谷问题的起源数学定义与基本性质研究进展挂谷集合与挂谷猜想王虹与Joshua Zahl的突破意义与影响 挂谷问题的起源 1917年&#xff0c;日本数学家挂谷宗一(かけや そういち Soichi Kakeya&#xff0c;1886-1947)提…...

区块链 智能合约安全 | 整型溢出漏洞

目录&#xff1a; 核心概念 溢出类型 上溢 原理 案例 下溢 原理 案例 练习 漏洞修复 使用 SafeMath 库&#xff08;旧版本&#xff09; 升级 Solidity 版本&#xff08;≥0.8.0&#xff09; 地址&#xff1a;zkanzz 整型溢出漏洞&#xff08;Integer Overflow/Underflow Vulne…...

C# HTTP 文件上传、下载服务器

程序需要管理员权限&#xff0c;vs需要管理员打开 首次运行需要执行以下命令注册URL&#xff08;管理员命令行&#xff09; netsh advfirewall firewall add rule name"FileShare" dirin actionallow protocolTCP localport8000 ipconfig | findstr "IPv4&quo…...

IDEA导入jar包后提示无法解析jar包中的类,比如无法解析符号 ‘log4j‘

IDEA导入jar包后提示无法解析jar包中的类 问题描述解决方法 问题描述 IDEA导入jar包的Maven坐标后&#xff0c;使用jar中的类比如log4j&#xff0c;仍然提示比如无法解析符号 log4j。 解决方法 在添加了依赖和配置文件后&#xff0c;确保刷新你的IDE项目和任何缓存&#xff…...

C++前缀和

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来了解一下C的一个重要概念&#xff1a;前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…...

kafka压缩

最近有幸公司参与kafka消息压缩&#xff0c;背景是日志消息量比较大。kafka版本2.4.1 一、确认压缩算法 根据场景不同选择不同。如果是带宽敏感患者推荐高压缩比的zstd&#xff0c;如果是cpu敏感患者推荐lz4 lz4和zstd底层都使用的是lz77算法&#xff0c;具体实现逻辑不同&am…...

C 语 言 --- 扫 雷 游 戏(初 阶 版)

C 语 言 --- 扫 雷 游 戏 初 阶 版 代 码 全 貌 与 功 能 介 绍扫雷游戏的功能说明游 戏 效 果 展 示游 戏 代 码 详 解game.htest.cgame.c 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验 助 你 入 门 C 语 言 &#x1f4a1;个 人 主…...

黑鲨外设2025春季新品发布会:全球首款“冷暖双控”鼠标亮相!

据可靠消息称&#xff0c;电竞外设领域的创新引领者——黑鲨外设&#xff0c;正式官宣将于2025年3月28日17:00召开主题为“究极体验&#xff0c;竞在其中”春季新品发布会。据悉&#xff0c;此次新品发布会将于黑鲨游戏外设和黑鲨游戏手机官方平台同步直播&#xff0c;&#xf…...