二分查找实战:LeetCode样题精解

1.lecode例题:https://leetcode.cn/problems/binary-search/solutions/980494/er-fen-cha-zhao-by-leetcode-solution-f0xw

2.解题思路:

找到target并返回target的索引下标,想用bisect二分。首先理解bisect的语法,给定一个单调不减的有序数组a,返回恰好严格大于x的下标位置。但这里有所区别,题目要求是刚好等于target的位置,所以我想用bisect变形。即题目转化为敲好大于等于target的下标位置,输入bisect(a,target-1) 刚开始我还输入了nums n m Q等数据输入板块,第一次做lecode题库,初尝新,知道了lecode不需要数据输入模块,前面两行代码是平台预设的框架,用户只需关注算法本身逻辑

3.过程错误与修正:

a.过程错误 (前三行快读模板熟练敲打)

b.错误分析解读(two methods)

1.from bisect import * 对应index=bisect_left(nums,target) 【既然菜都在桌子上了直接开吃,不用+bisect餐厅名】

2.import bisect 对应 index=bisect.bisect_left(nums,target) 【先进入餐厅再点菜引bisect再bisect.left】

[通俗理解:bisect是一个餐厅,bisect_left~bisect_right~是bisect餐厅里的菜品名,输入1.时相当于叫服务员把所有菜品都上,再输入bisect.bisect_left相当于把餐厅都叫上来了但是餐厅不是菜品故报错,当输入bisect.bisect_left时相当于在糖醋排骨里找回锅肉,这怎么可能故报错了]

4.官网样题学习(知二分底层思维逻辑)

len(nums)-1:索引值比len少1

mid=(right-left)//2+left:确定不断更新的mid位置(相对位置and绝对位置区分)

{如l=2,r=6,r-l=4//2=2,此时mid=2+l(2)=4}

二分思维逻辑透析:

a.定左右区间(r=len-1)查找整个数组

b.不断更新左右区间和mid

c.if判断不断更新的mid与target的关系(mid>t:right=mid-1;mid<t:left=mid+1)

5.二分变形(bisect二分)

学习资源:bilibili up主TsingPing

a.基础模型:给定一个单调不减有序数组a,bisect(a,x),返回大于x的索引

b.变型  *大于等于x=大于x-1    bisect(a,x-1)

             *小于等于x=大于x的索引-1   bisect(a,x)-1

             *给定一个单调不增数组a,转变为单调不减数组-a  a=[-x for x in a]  bisect(a,-x)

              (镜像对称)

6.解题策略与提升

好吧我现在理解了但是当再次做到这种类似二分,我将背硬套模板

 

普通二分标准代码如上4(1)图

Read more

打造你的家庭 AI 助手(三):QQ 机器人接入你的 OpenClaw

打造你的家庭 AI 助手(三):QQ 机器人接入你的 OpenClaw

不得不承认腾讯进步的速度太快了,几条命令就可以接入Openclaw,也不用设置IP白名单了,在 QQ开放平台还增加了专门的Openclaw入口: 没啥好说的,很简单,安装完Openclaw之后,执行如下命令(命令也是生成好的): openclaw plugins install @tencent-connect/openclaw-qqbot@latest openclaw channels add--channel qqbot --token"" openclaw gateway restart 以下内容已经过时了,留作纪念 以下内容已经过时了,留作纪念 以下内容已经过时了,留作纪念 ⚠️ 重要提示:如果是家用宽带,没有申请固定 IP 地址的话,大可以放弃这种方式。由于 QQ 开发平台的白名单限制,机器人会非常不稳定,频繁掉线。建议使用云服务器或有固定 IP 的环境部署。 前言 在完成 OpenClaw 安装后,

By Ne0inhk

Golang的Channel

Go 语言通道(Channel)笔记 1. 概述 通道(channel)是 Go 语言中用于 goroutine 之间通信 的核心机制,是 CSP(Communicating Sequential Processes)模型在 Go 中的具体实现。Go 并发哲学强调: “不要通过共享内存来通信,而应通过通信来共享内存。” 通道允许一个 goroutine 将值发送到另一个 goroutine,实现了内存的 无锁同步访问。通道本身是并发安全的,内置了同步语义,使得并发编程更加简洁和健壮。 2. 基本概念 2.1 类型表示 通道是一种类型化的引用类型,声明方式为 chan T,其中 T 是通道中元素的类型。 var ch chan

By Ne0inhk
最新Spring Security实战教程(十四)OAuth2.0精讲 - 四种授权模式与资源服务器搭建

最新Spring Security实战教程(十四)OAuth2.0精讲 - 四种授权模式与资源服务器搭建

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 🌞《Spring Security》专栏中我们将逐步深入Spring Security的各个技术细节,带你从入门到精通,全面掌握这一安全技术 如果文章能够给大家带来一定的帮助!欢迎关注、评

By Ne0inhk
每天一个网络知识:什么是 Clos 架构?

每天一个网络知识:什么是 Clos 架构?

在日常使用网络时,我们或许会好奇:为什么大型数据中心能支撑上万人同时访问、传输海量数据却很少出现拥堵?为什么企业内部的多部门数据交互能既高效又安全?这背后离不开多种优秀网络架构的支撑,今天我们要介绍的,就是在数据中心等场景中广泛应用的——Clos 架构。 首先,我们来明确 Clos 架构的核心定义。 Clos 架构是一种由美国贝尔实验室的 Charles Clos 于 1953 年提出的多级交换网络架构,最初被用于电话交换系统,目的是解决传统集中式交换架构在端口数量增多时,交叉连接复杂度激增、性能下降的问题。随着网络技术的发展,它被逐步引入数据中心网络领域,成为构建高带宽、低延迟、高可扩展性网络的核心架构之一。简单来说,Clos 架构的核心思路是“化整为零、分级互联”,通过将网络分为多个层级,用多个小容量的交换设备替代单一大容量交换设备,实现端口数量的灵活扩展和数据的高效转发。 典型的 Clos 架构分为三级,分别是接入层、汇聚层(也叫中间层)和核心层,这三级设备通过固定的互联规则形成完整的网络拓扑: 第一级是接入层,也叫边缘层。 这一层的设备直接连接服务器、终端等终端设备,

By Ne0inhk