数据结构的学习(1)二分查找,利用二分查找找局部最小值,选择排序,冒泡排序,插入排序,位运算的基础知识
一、二分查找某个元素
(1)查找是否存在某个元素在数组中
思想:
1)先看中间位置的值
2)如果中间位置的值大于目标值说明目标值在整个数组中偏左的位置,改变右边界,即Right = Mid - 1;
3)如果中间位置的值小于目标值说明目标值在整个数组中偏右的位置,改变左边界,即Left = Mid + 1;
public static bool Exits(int[] arr,int target){if (arr == null || arr.Length == 0){return false;}int left= 0;int right = arr.Length - 1;while (left <= right){int mid = left + ((right - left) >> 2);if (arr[mid] < target){left = mid + 1;}else if (arr[mid] > target){right = mid - 1;}else{return true;}}return false;}
(2)利用二分查找大于等于某个数的最左侧位置,或者二分查找小于等于某个数的最右侧位置
思想:
1)每次找到符合范围的值,就记录当前的索引,每次砍掉另外一半
2)就比如,查找大于等于某个数的最左侧位置,就每次在更新右边界的时候,记录此时的中间位置,因为什么呢?因为你每次在更新右边界,说明此刻中间值一定是小于等于目标值的,是不是就是偏左的位置,例如 1 2 2 2 4 5,你在找2的最左侧位置。第一次二分,你找到了2,于是更新右边界为2此时新Mid是1,然后在找,发现继续更新右边界为0了,和Left相等了,然后计算此时的Mid,发现不满足条件分支,于是结束了最后一次循环。你在循环中抓住的最后一个Mid索引就是符合题意的位置。
代码:
public static int NearestLeft(int[] arr,int target){int left = 0;int right = arr.Length - 1;int index = -1;while (left <= right){int mid = left + (right - left) >> 2;if (arr[mid] >= target){index= mid;right = mid - 1;}else{left = mid + 1;}}return index;}
二、利用二分查找寻找局部最小值
什么是局部最小值:如下定义:
(1)如果是在0位置,0位置的数小于1位置的数,那么0位置就是局部最小值
(2)同理,如果最后一个位置的数小于倒数第二个位置的数,那么最后一个位置的数就是局部最小值。
(3)在中间时,一定严格满足同时比左边小和比右边小,才叫局部最小值。
(4)给定的数组元素,一定保证相邻元素互不相等,有不有序无所谓
其实按照上面的描述,我们可以如下实现:
1)首先判断边界条件,看数组是否为空或者仅有一个元素,直接返回false,找不到
2)按照上面的条件,如果数组只有两个元素,同时呢0位置的元素小于1位置,说明此时0位置为局部最小值。尾部位置的元素同理
3)判断完了边界条件之后,我们就可以看中间是怎么进行判断的了。
①如果中间值小于中间值右边的第一个元素同时小于左边的第一个元素,说明找到了,直接返回。
②如果中间值仅单独小于某一边元素,但是却大于另一边元素,此时更新边界,如何更新边界呢。就是,移动比自己大的那一边的边界。例如Mid位置<Mid+1位置,则移动右边界,反之移动左边界。为什么?因为你始终要保证边界值一定比边界值前一个元素要大,所以才能肯定能找到局部最小值。
代码:
public int BsGetLocalSmallest(int[] nums)
{if (nums == null || nums.Length == 0){return -1;}if (nums.Length==2|| nums[0] < nums[1]){return nums[0];}if (nums[nums.Length - 1] < nums[nums.Length - 2]){return nums[nums.Length - 1];}int left = 0;int right = nums.Length - 1;while (left <= right){int mid = left + ((right - left) >> 2);if (nums[mid] < nums[mid - 1] && nums[mid] < nums[mid + 1]){return mid;}else if (nums[mid] < nums[mid + 1]){right = mid - 1;}else{left = mid + 1;}}return -1;
}
三、3个O(N²)的排序算法,选择排序,冒泡排序,插入排序
这几个没什么好说的:
交换函数(你可以用位运算写,不过注意用位运算时,交换的对象的引用地址不能是同一个):
public static void Swap(int[] arr, int i, int j)
{int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;
}
选择排序:
第一层循环中记录当前的索引,第二层循环找出最小值的位置,结束本层循环后,与先前记录的索引,交换位置即可。
/*选择排序 */
public static void SelectSort(int[] arr)
{if (arr == null || arr.Length < 2){return;}for (int i = 0; i < arr.Length - 1; i++){//每次遍历找到最小值的下标//然后将当前位置的值和最小值的位置进行交换 那么此时的位置就是最小值int mindex = i;for (int j = i + 1; j < arr.Length; j++){if (arr[j] < arr[mindex]){mindex = j;}}Swap(arr, i, mindex);}
}
冒泡排序:
就是不断比较相邻的数,升序的话。那就是将比自己大的放后面。同样是两层循环。第一层循环从最后一个元素开始,第二层循环从0位置一直到第一层循环记录的索引位置。每次比较,将最大的数放在最后,然后索引前移
/*冒泡排序*/
public static void Bubble(int[] arr)
{//判空 和 单元素 处理if (arr == null || arr.Length < 2){return;}//从尾部开始寻找for (int end = arr.Length - 1; end > 0; end--){for (int i = 0; i < end; i++){if (arr[i] > arr[i + 1]){Swap(arr, i, i + 1);}}}
}
插入排序:
你可以理解为扑克牌排序,我们都是保证从0~0位置,0~1位置,0~2位置,一直到0~ N-1位置,逐渐有序。那么实现起来就很简单,首先第一个元素不用判断吧,所以第一层的循环直接从1开始,然后到末尾。在第二层循环中,我们需要做些什么呢。当然是从上一次层的索引位置的前一个开始,逐步和前面比较,谁小谁放前,每次循环都会保证 ~ 第一层的索引值位置的数有序的。
代码:
/*插入排序*/
public static void InsertSort(int[] arr)
{if (arr == null || arr.Length < 2){return;}//先保证 0~0有序//再保证 0~1有序//……//0~N-1有序// 直接从1开始 每次交换相邻 谁大谁放后for (int i = 1; i < arr.Length; i++){// 当前数 下一个for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--){Swap(arr, j, j + 1);}}
}
四、利用位运算进行查找奇数次的数字
请务必记住异或的性质,不进位加法!!!!
例如 1 0 1 0 1 0 1 1 1 0 1 0 1 ^
1 1 1 1 1 0 1 0 0 1 0 1 0 =
0 1 0 1 0 0 0 1 1 1 1 1 1 这就是异或的性质
还有值得记住的就是,任何数和0异或都是自己,任何数和自己异或都是0。好的你已经学会了异或的基本知识辣,我们来两道练手题目吧!
(1)找出一个数组中出现了奇数次的数,其余数都是偶数次数只出现一次的数:
很简单,全部异或一遍不就好了!
class Solution {
public:int singleNumber(vector<int>& nums) {int ans = 0;for(int i = 0;i<nums.size();i++){ans^=nums[i];}return ans;}
};
(2)你已经会找到一个奇数次的数了,很好,很不错,那么我们接下来要加大难度辣。在一个数组中,有两种数,出现了,奇数次。其余的数都出现的是偶数次。
一个小知识,找出一个数作为二进制中最右边的1的位置:
当然是这个数 N&(~N + 1),这一坨,就是只有最右边那个为1的数保留了下来,其余的都去死啦,都变成0辣。为什么呢?
假如N的二进制为 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0
那么~N的二进制为 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1
加1后是啥 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0
与上后是啥 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
是不是就只剩下最后一个含有1的数了。
好的,回归主线辣,怎么做这个题目呢:
1)你先将每个数都异或起来,异或出来的结果是不是就是两个奇数次的数,我们不妨设为a^b
2)只要他们不为0,是不是就说明,他们的二进制形式一定有一个上面不为0,而是1,我们把这个1找出来。怎么找,利用刚才上述提到的方法找。找出来了,我们命名为rightOne好不好。
3) 那么我们是不是就可以把整个数组中的元素,分为两部分,一部分是和rightOne这个数1位置相同的数,另一部分是不是就是没有就是0,在该二进制位置上面。对不对。
4)很好,你已经快成功了,你已经将上面的数组分成了两部分,怎么分?当然是通过&运算啦,只要结果不为0,说明啥,说明该位置上的都是1.归为一类,否则归为另一类。此刻呢,你只需要重复刚才我们在一堆偶数次数中找计数次的操作就OK了啊!是不是很简单就实现了!!!这时候你已经找到了一个数
5)那么怎么找到另一个呢,当然是和a^b在异或一次就行了,因为相同的数异或起来会为0,0和任何数异或都是自己,而且异或满足交换律和结合律。你只需要记住,相同的一些数,不管他们的位置如何,只要都是异或,那么最后的结果就是不会发生变化的。
代码如下:
//有两个奇数次的数 抓出来public static void printOddTimesTwo(int[] nums){int eor = 0;for(int i = 0; i < nums.Length; i++){eor ^= nums[i];}int onlyOne = 0;//eor'int rightOne = eor & ((~eor) + 1);for(int i = 0;i<nums.Length; i++){if ((rightOne & (nums[i])) != 0){onlyOne &= nums[i];}}Console.WriteLine(onlyOne);Console.WriteLine(eor ^ onlyOne);}
相关文章:
数据结构的学习(1)二分查找,利用二分查找找局部最小值,选择排序,冒泡排序,插入排序,位运算的基础知识
一、二分查找某个元素 (1)查找是否存在某个元素在数组中 思想: 1)先看中间位置的值 2)如果中间位置的值大于目标值说明目标值在整个数组中偏左的位置,改变右边界,即Right Mid - 1; 3…...
vue2+Vant 定制主题
参考文档:Vant主题定制-CSDV博客 vant提供了一套默认主题,若想完全替换主题是或者其他样式,则需要定制主题。 定制方法 1、main.js文件引入主题样式源文件 // 导入并安装 Vant 组件库 import Vant from vant // 切记:为了能够覆…...
【自然语言处理与大模型】大模型参数规模与部署配置调查2025第一季度
调查大模型参数规模与部署配置之间的关系。探讨如何在不同硬件和场景下优化大模型的部署。 一、 当前主流模型的参数规模对比 (1)当前主流模型有哪些 参考全球最大AI开源社区Hugging Face发布的榜单、上海AI实验室推出的开放评测体系OpenCompass和国内开…...
香港科技大学广州|先进材料学域博士招生宣讲会—南开大学专场
香港科技大学广州|先进材料学域博士招生宣讲会—南开大学专场 时间:2025年4月25日(星期五)10:00 地点:南开大学八里台校区中心实验室报告厅 宣讲嘉宾: 李昊翔 助理教授 TAN Chee Keong 助理教授 教授亲…...
异构迁移学习(无创脑机接口中的跨脑电帽迁移学习)
本文介绍BCI中的跨脑电帽的迁移学习最新算法。 (发表于2025 arxiv,应该属于投稿阶段,这个场景具有非常不错的研究意义和前景) 最新跨脑电帽异构算法github开源代码 SDDA算法原文 一、脑机接口绪论 脑机接口(BCI)指在人或动物大脑与外部设备之间创建的直接连接,通过脑…...
若依项目部署小结
参考视频:前后端分离式项目实战部署 | CodeSheep 环境搭建 虚拟机环境:jdk1.8 tomcat9 nginx A :虚拟机A运行前端项目 A B:虚拟机B运行war包 B C:虚拟机C运行jar包 C mysql和redis连的是C主机 前端项目部署 必备&…...
多智能体系统的中间件架构
多智能体系统(Multi-Agent Systems, MAS)是一种由多个智能体(Agents)组成的分布式系统,这些智能体能够自主地感知环境、做出决策并与其他智能体进行交互。 中间件(Middleware)在多智能体系统中…...
Eliciting Causal Abilities in Large Language Models for Reasoning Tasks
Eliciting Causal Abilities in Large Language Models for Reasoning Tasks | Proceedings of the AAAI Conference on Artificial Intelligencehttps://ojs.aaai.org/index.php/AAAI/article/view/33669 1. 概述 大型语言模型(Large Language Models, LLMs)面临的一...
DeepSeek+Mermaid:轻松实现可视化图表自动化生成(附实战演练)
目录 一、引言:AI 与图表的梦幻联动二、DeepSeek:大语言模型新星崛起2.1 DeepSeek 全面剖析2.2 多场景应用示例2.2.1 文本生成2.2.2 代码编写 三、Mermaid:代码式图表绘制专家3.1 Mermaid 基础探秘3.2 语法与图表类型详解3.2.1 流程图&#x…...
LeetCode第164题_最大间距
LeetCode 第164题:最大间距 题目描述 给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。 您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。 难度…...
什么是DDD?为什么它正在取代传统架构?
什么是DDD?为什么它正在取代传统架构? 1. 传统开发模式的痛点 在经典的MVC架构中,开发流程往往从数据库表结构设计开始,业务逻辑散落在Service层,随着需求迭代容易形成「大泥球」代码: 实体类变成纯粹的…...
Vue3父子组件数据双向同步实现方法
在 Vue 3 中,实现父子组件间双向同步响应式对象的步骤如下: 实现思路 父组件通过 v-model 传递响应式对象。 子组件接收并深拷贝为本地副本。 子组件监听父组件的数据变化,更新本地副本(不触发同步)。 子组件监听本…...
一些基本的 Vue 规范
一、项目结构规范 推荐的目录结构 src/ ├── assets/ # 静态资源(如图片、字体) ├── components/ # 全局组件 ├── views/ # 页面组件(用于路由) ├── router/ # 路由配置 ├── store/…...
面试篇:Java并发与多线程
基础概念 什么是线程?线程和进程的区别是什么? 线程 是程序执行的最小单位,它是 CPU 调度和执行的基本单元。一个进程可以包含多个线程,这些线程共享进程的资源(如内存),但每个线程有自己的栈…...
Unity中通过TMP使用图片字体
折腾了半天,最后发现一个相对简单,不需要使用任何插件,只凭默认的TMP外加PS的办法。 1,在Font Asset Creator设置参数 (1)source font file:尽量选一个支持中文的字体。 (2&#x…...
WSL2-Ubuntu22.04下拉取Docker MongoDB镜像并启动
若未安装docker可参考此教程:可以直接在wsl上安装docker吗,而不是安装docker desktop?-CSDN博客 1. 拉取镜像 docker pull mongo:latest 2.打开网络加速,再次拉取镜像 3.创建docker-compose.yml 进入vim编辑器后输入i进行编辑&a…...
Java基础系列-HashMap源码解析2-AVL树
文章目录 AVL树左旋右旋左旋右旋的4种情况LL 型RR 型LR 型RL 型 实际插入时怎么判断是那种类型?插入时注意事项删除节点 AVL树 为避免BST树退化成链表的极端情况, AVL 树应运而生。 平衡因子取值(-1,0,1)…...
介绍 IntelliJ IDEA 快捷键操作
IntelliJ IDEA 快捷键操作 1. 编辑与导航2. 查找与替换3. 调试与运行4. 导航与视图5. 重构与生成6. 高级快捷键(提高效率)注意事项 IntelliJ IDEA 是一款功能强大的集成开发环境,掌握其常用快捷键可以显著提升开发效率。但是有些小伙伴并不清…...
Python 流程控制
目录 1. if 语句 1.1 条件表达式与关系运算符 1.2 if-else 条件语句 1.3 多重 if 语句 1.4 if 语句的常见问题 2. Python 的循环 2.1 while 循环 2.1.1 while 循环语句 2.1.2 Python 的注释 2.1.3 字符串的格式化输出 2.1.4 while 循环嵌套 2.2 for 循环 2.2.1 for…...
若依框架深度解析:企业级快速开发平台的设计哲学与实践
一、框架定位与技术基因 若依(RuoYi)作为国产开源企业级快速开发平台,完美融合了**"高效"与"灵活"两大核心设计理念。其技术基因植根于Spring Boot生态,通过模块化架构设计,将传统Java EE开发效率…...
【每日八股】复习 MySQL Day2:索引
文章目录 昨日内容复习MySQL 事务的四大特性?并发事务会产生哪些问题?MySQL 事务的隔离级别?MVCC 实现原理?幻读如何解决?读已提交隔离级别如何实现? 复习 MySQL Day2:索引MySQL 使用 B 树作为索…...
2025深圳中兴通讯安卓开发社招面经
2月27号 中兴通讯一面 30多分钟 自我介绍 聊项目 我的优缺点,跟同事相比,有什么突出的地方 Handler机制,如何判断是哪个消息比较耗时 设计模式:模板模式 线程的状态 线程的开启方式 线程池原理 活动的启动模式 Service和Activity…...
MyBatis中的@Param注解-如何传入多个不同类型的参数
mybatis中参数识别规则 默认情况下,MyBatis 会按照参数位置自动分配名称:param1, param2, param3, ...或者 arg0, arg1。 // Mapper 接口方法 User getUserByIdAndName(Integer id, String name); 以上接口在XML中只能通过param1或者arg0这样的方式来引用,可读性差。 &l…...
【高频考点精讲】JavaScript中的访问者模式:从AST解析到数据转换的艺术
大家好呀!今天想和大家聊聊一个既实用又有点"高冷"的设计模式——访问者模式。这个模式在AST解析、Babel插件开发中无处不在,但很多同学可能一直没搞明白它到底妙在哪里。 一、生活中的访问者模式 想象一下你开了一家奶茶店,店里…...
crictl 拉取镜像报错 Unimplemented desc = unknown service runtime.v1.ImageService
具体报错内容如下 crictl pull registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.9 FATA[0000] validate service connection: validate CRI v1 image API for endpoint "unix:///run/containerd/containerd.sock": rpc error: code Unimplemented desc un…...
1.第一章:数据治理的历史演进
文章目录 1.1 数据管理的进化之路1.2 数据整合时代的突破与局限1.3 数据治理时代的全面展开1.4 智能数据治理的突破性进展1.5 数据分类的根本价值与方法论1.6 数据分类的新方向 第一章快速的过一下: 相关专栏:数据分类的艺术 1.1 数据管理的进化之路 数…...
ApacheJmeter使用权威指南
1. JMeter 概述 JMeter 是一款开源的性能测试工具,支持HTTP、FTP、JDBC、SOAP等协议,广泛用于负载测试、压力测试和功能测试。 核心功能: 模拟多用户并发请求生成实时测试报告支持分布式测试断言验证响应结果 2. 安装与配置 2.1 环境要求…...
Ethan独立开发产品日报 | 2025-04-22
1. Agent Simulate 用数千个数字人来测试你的人工智能应用。 Agent Simulate 让你在发布之前,能够在一个安全的环境中模拟和测试大型语言模型(LLM)代理。它帮助你调试行为、加快迭代速度,并降低生产风险,专为代理开发…...
C++二分法详解
C二分法详解 文章目录 C二分法详解一、算法简介二、算法原理三、代码实现四、复杂度分析五、常见练习题 一、算法简介 二分查找(Binary Search)是一种 高效搜索算法 ,适用于 有序序列 。通过每次将搜索范围减半,时间复杂度为O(log…...
【UML建模】数据流图 绘制
管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识点 1.1定义 数据流图或数据流程图(Data Flow Diagram,简称DFD),是需求分析阶段(结构化分析 SA)中主要表达工具 , 用于表示软件模型的一种图示方法。它以图形的方式描绘数据在系统中流动和处理…...
django软件开发招聘数据分析与可视化系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,招聘信息管理系统当然不能排除在外。软件开发招聘数据分析与可视化系统是在实际应用和软件工程的开发原理之上,运用Python语言…...
HarmonyOS-ArkUI 一镜到底之组件内隐式共享元素转场 geometryTransition
geometry transition 英译为: 几何过渡。这个动画写法挺简单的,不妨碍人家的炫酷。这种效果其实就是传说中的一镜到底!从现在开始,本文geometry transition 与一镜到底具有同样的含义,指的是同样的概念。 共享元素转场(一镜到底)指的是什么效果(图文对比) 共享元素转场着…...
Visual Studio2022 配置 SDL3及拓展库
SDL(Simple DirectMedia Layer)是一个开源的跨平台多媒体开发库,使用C语言编写,主要用于游戏、模拟器和媒体播放器等多媒体应用的开发。它提供了控制图像、声音、输入输出等功能的函数,使开发者能够用相同的代码开发跨…...
Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南
Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南 引言:实时计算的范式革命 2023年双十一期间,某头部电商平台基于Flink构建的实时风控系统成功拦截了每秒超过120万次的异常交易请求。这背后是Apache Flink作为第四代计算引擎的强…...
17.QT-Qt窗口-工具栏|状态栏|浮动窗口|设置停靠位置|设置浮动属性|设置移动属性|拉伸系数|添加控件(C++)
⼯具栏 ⼯具栏是应⽤程序中集成各种功能实现快捷键使⽤的⼀个区域。可以有多个,也可以没有,它并不是应⽤程序中必须存在的组件。它是⼀个可移动的组件,它的元素可以是各种窗⼝组件,它的元素通常以图标按钮的⽅式存在。如下图为⼯…...
开源模型应用落地-语音合成-Spark-TTS-零样本克隆与多语言生成的突破
一、前言 在人工智能生成内容(AIGC)浪潮中,文本到语音(TTS)技术始终面临一个核心矛盾:如何在效率与自然度之间找到平衡?传统TTS系统依赖复杂的多阶段流程,从文本分析到声学建模再到音频生成,每一步都可能成为“自然感”的瓶颈。而新兴的Spark-TTS ,凭借其颠覆性的“单…...
锁存器知识点详解
一、锁存器基础概念 锁存器(Latch)是一种基础的数字电路存储元件,能够在时钟信号或使能信号的控制下,暂时保存数据状态。与触发器(Flip-Flop)不同,锁存器是电平敏感的,即在使能信…...
武装Burp Suite工具:xia SQL自动化测试_插件
武装Burp Suite工具:xia SQL自动化测试_插件 插件作者介绍:本插件仅只插入单引号,没有其他盲注啥的,且返回的结果需要人工介入去判断是否存在注入,如果需要所有注入都测试,请把burp的流量转发到xray。 目录…...
Java面试:探索Spring Boot与微服务的深度挑战
场景:互联网大厂Java求职面试 在一个阳光明媚的上午,赵大宝来到了知名互联网大厂进行Java开发岗位的面试。面试官是一位严肃且经验丰富的技术专家,准备对赵大宝进行技术上的全面考核。 第一轮提问:基础知识与Spring框架 面试官…...
【redis】主从复制
Redis的单机模式仅部署单个实例,一旦节点宕机或网络故障,所有依赖Redis的服务将不可用,这就是所谓的单点故障问题。单节点需承担全部读写请求,并发量高时可能成为性能瓶颈。单节点受限于物理内存容量,无法突破内存物理…...
Qt多线程学习初级指南
一、引言部分 1. 多线程编程的重要性 在当今计算环境中,多线程编程已成为开发高性能应用程序的关键技术。现代应用程序面临着三大挑战: GUI响应性:用户界面需要保持流畅响应,即使在进行后台计算时 多核利用率:随着多…...
《解锁vLLM:大语言模型推理的加速密码》
《解锁vLLM:大语言模型推理的加速密码》 引言:AI 时代的推理引擎之光 在当今的人工智能领域,大语言模型无疑是最为耀眼的明星。它们犹如智能世界的基石,为无数的应用和创新提供了强大的支持。从日常的智能聊天机器人,到复杂的文本生成、机器翻译任务,大语言模型都展现出…...
1.1 java开发的准备工作
准备工作 一.JDK 开始写java程序之前需要安装jdk jdk是java开发工具,包含着JRE和里面的JVM(虚拟机,可以使得不同环境下都能运行Java程序),和开发工具。 二.了解写程序的三大步骤步骤 java成功运行主要需要经过代码编写,编译&a…...
矩阵运算 第30次CCF-CSP计算机软件能力认证
n和d差距这么大 就可以想到改变矩阵运算顺序来解决这道题 假设两个矩阵,分别为a行b列与b行c列,那么一次矩阵运算复杂度是a乘以c乘以b,对于这题,如果从左往右运算复杂度将会到 1e4乘以1e4乘以20>1e9 (n1e4,d20),常识…...
【Tools】Git常见操作
Git 1 配置 包括: 用户信息、分支策略、合并策略、钩子脚本路径等。 git config -l # 等价 --local --list git config --global --list # 全局 git config --local --list # 当前仓库git config user.name git config user.emailgit config user.name "Your Name"…...
国产RK3568+FPGA以 “实时控制+高精度采集+灵活扩展” 为核心的解决方案
RK3568FPGA方案在工业领域应用的核心优势 一、实时性与低延迟控制 AMP架构与GPIO中断技术 通过非对称多处理架构(AMP)实现Linux与实时操作系统(RTOS/裸机)协同,主核负责调度,从核通过GPIO中断响应紧…...
UnoCSS原子CSS引擎-前端福音
UnoCSS是一款原子化的即时按需 CSS 引擎,其中没有核心实用程序,所有功能都是通过预设提供的。默认情况下UnoCSS应用通过预设来实现相关功能。 UnoCSS中文文档: https://www.unocss.com.cn 前有很多种原子化的框架,例如 Tailwind…...
0.(新专栏目录)数据分类的艺术:从理论到实践的全面指南
前言 话说天下大数据事,分久必合,合久必分。在这个数据爆炸的时代,我们见证了数据的分散与聚合,见证了数据从孤岛到互联的转变。 回望数据发展的历程,最初企业的数据系统往往是各自为政的,各部门、各系统…...
leetcode 二分查找应用
34. Find First and Last Position of Element in Sorted Array 代码: class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {int low lowwer_bound(nums,target);int high upper_bound(nums,target);if(low high…...
航电系统之编队运动控制技术篇
航电系统的编队运动控制技术是现代航空航天领域的关键技术之一,涉及多飞行器协同飞行中的导航、通信、控制与决策。 一、技术原理 编队运动控制技术的核心目标是通过航电系统实现多飞行器(如无人机、卫星等)在空间或时间上的协同运动。其基本…...