二分查找实战: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

Linux命名管道(FIFO)通信:从原理到实操,一文搞懂跨进程通信

Linux命名管道(FIFO)通信:从原理到实操,一文搞懂跨进程通信

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 目录 前言: 一、先搞懂:命名管道(FIFO)是什么? 1. 命名管道的本质 2. 命名管道的核心特点 3. 命名管道与匿名管道的对比 二. 命名管道的创建方式 2.1 命令行创建(mkfifo 命令) 2.2 代码创建(mkfifo 函数) 2.3 命名管道的打开规则 三、实操实现:手搓命名管道通信 3.1 前置准备(

By Ne0inhk
Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构

Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 injectfy 适配鸿蒙 HarmonyOS 实战:逻辑注入矩阵,构建跨模块解耦与动态依赖管理架构 前言 在鸿蒙(OpenHarmony)生态迈向超大规模应用拆分、涉及数百个独立 Feature 模块与底层硬件服务深度解耦的背景下,如何实现灵活的“控制反转(IoC)”与“依赖注入(DI)”,已成为决定应用架构可维护性的“生命线”。在鸿蒙设备这类强调模块化挂载与 HAP/HSP 动态分发的环境下,如果应用内部的组件实例依然采用强耦合的硬编码初始化,由于由于各模块间复杂的循环依赖,极易由于由于初始化顺序错乱导致应用在流转拉起时的崩溃。 我们需要一种能够实现零成本解耦、支持单例(Singleton)与工厂(Factory)模式且具备极简注册语义的依赖注入框架。 injectfy 为 Flutter 开发者引入了轻量级的对象容器管理方案。它不仅支持对底层 Service 的全局托管,更提供了灵活的注入探测机制。在适配到鸿蒙

By Ne0inhk
一文通透OpenVLA——在Prismatic VLM(SigLIP、DinoV2、Llama 2)的架构上:基于“下一个token预测技术”预测离散化动作

一文通透OpenVLA——在Prismatic VLM(SigLIP、DinoV2、Llama 2)的架构上:基于“下一个token预测技术”预测离散化动作

前言 当对机器人动作策略的预测越来越成熟稳定之后(比如ACT、比如扩散策略diffusion policy),为了让机器人可以拥有更好的泛化能力,比较典型的途径之一便是基于预训练过的大语言模型中的广泛知识,然后加一个policy head(当然,一开始背后的模型比较简单,比如有用LSTM或MLP——RoboFlamingo) 再之后,便出来了越来越多成熟稳定的专门的VLA模型,比如OpenVLA,再比如近期介绍过过的π0——用于通用机器人控制的VLA模型:一套框架控制7种机械臂(基于PaliGemma和流匹配的3B模型) 1. π0的意义在于,首次用同一套策略/算法操作不同机器人/机械臂,这种基于机器人大模型的「预训练-微调」模式,很快会越来越多(犹如此前大模型革命NLP 其次CV等各模态,目前到了robot领域),算是代表了通用机器人的核心发展方向 2. 且π0 比英伟达的HOVER早一点,当然,同时期的RDT GR2也有这个潜力的,期待这两 后续的更新 一个多月前(本文首发于25年1月),有朋友曾说,一个月内,π0 会开源来着,当时虽然觉得不太可能,但还是抱着期待,可还

By Ne0inhk