自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 Boost.Asio 示例代码细致解读

DoRead()

2025-03-06 17:09:50 719

原创 Boost.Asio 一种强大的异步 I/O 操作实现工具

Boost.Asio基于,通过事件驱动的方式实现高效的异步 I/O。基于事件驱动,通过io_context管理事件循环。应用程序发起异步操作后,立即返回,继续执行其他任务。当 I/O 操作完成时,io_context会调用预先注册的回调函数(称为io_context:事件循环的核心,负责调度和处理异步事件。所有异步操作都需要通过io_context来执行。socket:表示网络套接字,支持异步读写操作。async_read:异步读写操作的接口。

2025-03-06 16:55:50 540

原创 一致性哈希函数处理负载均衡(简单实现,勿喷)

优化分析:虚拟节点的引入是为了解决一致性哈希算法在节点数量较少时负载不均衡的问题。可以进一步优化虚拟节点的生成方式,可以根据节点的权重动态调整虚拟节点的数量。可以进一步优化节点变化的处理效率,在删除节点时,批量移除虚拟节点,减少遍历哈希环的次数。在添加节点时,预分配虚拟节点的哈希值,减少哈希计算的开销。一致性哈希算法是分布式系统中常用的负载均衡算法,特别适合动态变化的服务节点场景。如果没找到(即 key 的哈希值大于所有节点的哈希值),则选择环中的第一个节点。来存储虚拟节点和真实节点的映射关系。

2025-03-06 16:45:22 525

原创 小米笔试真题刷练(较难俩个)

/ 他要把1~9的这9个数字不重不漏地填入这9个方格,并且保证填入的每个数字周围没有临近数,// 纸上的数字初始是1,小A想将它变成自己的幸运数字b,那么请问小A至少需要施加几次魔法。// 当且仅当至少存在一个位置在这两种方案中填充的数字不同时,两种填充方案被认为是不同的。// 这三行三列中的第i行第j列的数aij代表题面描述中的3x3方格对应位置的情况。// 保证至少有一个格子未填充,已填充的格子不会出现重复数字,但有可能不合法。// 小A一共会两种魔法,第一种魔法可以将纸上数字变为它的a倍,

2025-03-04 12:04:22 216

原创 力扣hot100---只出现一次的数子

/ 异或运算有个重要的性质,两个相同数字异或为 0 ,即对于任意整数 a 有 a⊕a=0。,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。// 遍历元素进行异或。

2025-03-03 12:08:03 178

原创 力扣hot100 —— 寻找重复数(快慢指针法)

/ 快指针和慢指针相遇时,慢指针走了 L + D 步,快指针走了 L + D + nC 步(n 是快指针在环内多走的圈数)。相遇点就是环的入口,即重复的数字。// 第一阶段:快慢指针从起点出发,快指针每次移动两步,慢指针每次移动一步,直到它们相遇。// 索引为0的元素的值为1, 表示头节点的下一个节点的索引为1, 即数组中的3。// 由于快指针已经在环内,走 nC - D 步后,它会回到环的入口。// 而形成环的原因是下一节点的索引一致, 即为重复的数字。// 慢指针从起点走 L 步,会到达环的入口。

2025-03-03 12:05:37 446

原创 c++优先队列使用总结,简单易懂

优先队列(Priority Queue)是一种抽象数据类型,类似于常规的队列或栈,但每个元素都有一个优先级。元素的出队顺序不是按照它们进入队列的顺序,而是根据它们的优先级。优先级最高的元素最先出队。

2025-02-27 21:59:06 1281

原创 力扣hot100——前k个高频元素 (优先队列法,相关总结文章见另一博客)

哈希表记录元素出现的次数,然后将哈希表元素加入优先队列(会自动根据比较原则去排列元素)定义优先队列根据元素频率降序排列,然后直接取出前k个元素即可。

2025-02-27 21:29:48 219

原创 力扣hot100——排序数组中查找元素出现的第一个位置和最后一个位置

/ 当找到后,左边继续向左边搜,不断更新找到位置就是左边界。// 同理,右边就是继续向右找,找到右边界。请你找出给定目标值在数组中的开始位置和结束位置。// 二分查找 划分左右俩边找。给你一个按照非递减顺序排列的整数数组。你必须设计并实现时间复杂度为。如果数组中不存在目标值。

2025-02-27 00:00:26 427

原创 力扣hot100——搜索旋转数组(总结一种非连续有序数组搜索)

(防止mid直接在小数组那边),然后继续比较,最后返回left就是位置;二分查找:当mid大于小数组最大值,表示数组max还在右边,则left = mid + 1。就算后续mid判断不对了,left也不会变,只是右边界不断缩小,直到跳出循环。解法思路:// 寻找旋转点,划分数组,然后遍历寻找答案。观察看出,旋转后,旋转点其实就是数组最大元素的位置。问题就是在俩个升序数组中,已知较小数组的最大值。,则返回它的下标,否则返回。你必须设计一个时间复杂度为。按升序排列,数组中的值。在预先未知的某个下标。

2025-02-26 23:50:57 264

原创 力扣hot100 —— 电话号码字母组合; 子集 (非回溯做法)简单易懂

此时:ans = [[ ], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3], [4], [1, 4], [2, 4], [1, 2, 4], [3, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]];3. ans = [[ ], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]], nums[3] = 3, 将元素3和ans内所有子集组合并添加进ans。逐渐将每次组合加入就行。

2025-02-25 21:56:25 492

原创 力扣hot100——分割回文子串 + 回溯算法总结(算法代码模板)

解法思路:切割一个a之后,在ab中再去切割第二段.....分割成一些子串,使每个子串都是。所有可能的分割方案。

2025-02-25 21:45:50 315

原创 力扣hot100——二叉树的右视图

想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。// 层序遍历找出每层看到的元素。// 每一层的最右边数据。

2025-02-25 00:02:51 195

原创 力扣hot100——岛屿数量 岛屿问题经典dfs总结

/ 因此需要在每个格子元素遍历后将其加一个标志 true 表示遍历过,false 表示没有遍历。// 将网格中的元素看作一个四叉的 就有四个((看作四个子树),不同在于会出现重复遍历兜圈子。因此需要在每个格子元素遍历后将其加一个标志 true 表示遍历过,false 表示没有遍历。将网格中的元素看作一个四叉的 就有四个((看作四个子树),不同在于会出现重复遍历兜圈子。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。

2025-02-24 23:59:28 538

原创 力扣hot100——腐烂的橘子 bfs经典面试题

/ 遍历如果有烂橘子,将其存入队列,然后出队,将其相邻橘子变为腐烂橘子,然后入队重复。// 直到新鲜橘子为0,返回进入队的次数;如果队空且新鲜橘子还有则返回-1。直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。的新鲜橘子都会腐烂。

2025-02-24 23:55:14 183

原创 力扣hot100——排序链表(常见方法,归并排序)

【代码】力扣hot100——排序链表(常见方法,归并排序)

2025-02-22 14:10:02 241

原创 力扣hot100——LRU缓存(面试高频考题)

双向链表:存储整个节点,由于是最久未使用页面删除,可以使用使用双向列表,最近的存储到前面,这样慢慢的就会按使用频率2(时间)将节点存储起来,每次只需要将链尾删除就行;根据lru特性,使用哈希表+双向链表。哈希表用于查找存储区中的节点信息。请你设计并实现一个满足。的平均时间复杂度运行。

2025-02-22 14:05:21 417

原创 力扣hot100——反转,环形链表 + 快慢指针总结

/ 快慢指针法,存在环,则因为指针速度不同,在寻找中,快指针一定会追上慢指针;当链表中存在环时,由于快指针相对于慢指针的速度优势,它们最终会在环内的某个位置相遇。将链表划分为俩部分;将后半部分反转,然后与前部分对比,如果相同则为回文,否则不是。快慢指针算法广泛用于线性表操作,通常让快慢指针(同一位置/相差1位置)开始移动。// 快慢指针出发点可以相同也可以不同。慢指针每次移动一步。快指针每次移动两步。检测链表中是否存在环。

2025-02-21 12:27:47 360

原创 力扣hot100——相交,回文链表

/ 由于两个链表可能长度不同,但相交部分之后的节点是相同的,因此通过让两个指针分别遍历两个链表(并在到达链表末尾时切换到另一个链表的头节点),它们最终会在交点处相遇。// 将原来的指向颠倒,定义俩个指针,一个指向头的前面,一个指向头。// a 和 b 相遇的地方就是交点2,如果不相遇就没有交点;// 将头的next指向他前面,然后后移,逐渐将链表反转。// 抽象为相遇问题,如果有交点,将A,B链表与相遇后链表看作一个整体。// 暴力解法: 将原链表值取出,反转后构造新链表。

2025-02-21 12:21:04 188

原创 力扣hot100 ——搜索二维矩阵 || m+n复杂度优化解法

借助行和列有序特性,不断按行或者列缩小范围;由于不是按行就是按列缩小,所以时间复杂度就是O(m+n)

2025-02-20 21:59:51 550

原创 力扣hot100——螺旋矩阵 超简单易懂的模拟搜索方法

返回矩阵中的所有元素。

2025-02-20 19:31:26 632

原创 力扣hot100——轮转数组

/ 空间换时间:轮转问题看作为平移,轮转就是转一圈,如果拉直这个轮的话,其实就是所有数字向后平移k。// 建立一个大小为 原数组+k的数组,将原数组中元素,移动k放入。// 然后将超出原数组部分放到前面空出的部分。,将数组中的元素向右轮转。

2025-02-20 16:49:27 197

原创 力扣hot100 ——和为k的子数组 前后缀和(积)各种情况总结

构建前缀和数组,以快速计算区间和;注意在计算区间和的时候,下标有偏移。子数组是数组中元素的连续非空序列。

2025-02-20 16:47:44 485

原创 力扣hot100——找到字符串中的所有字母异位词

本题维护长为n的子串s 的每种字母的出现次数。如果s 的每种字母的出现次数,和p的每种字母的出现次数都相同,那么s 是p的异位词,把s 左端点下标加入答案。// 判断字符相等,其实就是给定一个定长的窗口去滑动查找子串,为了便于判断将p 与窗口中的子串进行排序,如果相等则是。这种解法会有时间复杂度超标的问题吗,但是这个思路也是一种不错的解法。的子串,返回这些子串的起始索引。不考虑答案输出的顺序。// 将窗口的左边界加入。

2025-02-19 23:43:26 232

原创 力扣hot100——无重复字符最长子串

/ 如果存在则表示这个窗口(左右指针之间)出现重复,则要移动;窗口移动就是左指针右移动,同时删除set中左指针的元素。// 相当于换下一个子串;如果是字串的话,就删除右指针元素,相当于就是set中存储的是不连续的但是不同的字母。// 滑动窗口:同侧出发,检测右指针元素,当set中没有这个元素就把右指针元素加入,同时右指针右移。,请你找出其中不含有重复字符的。

2025-02-19 23:38:40 205

原创 力扣hot100 —— 11.盛最多的水

/ 木桶效应,短板决定水的上限,抽象问题一下,其实就是找出一对数字,俩者距离*较小数 的值就是他们的水量。// 采用双指针,俩端开始,逐渐计算水量进行比较;// 每次指针移动都是较小数字进行移动(木桶效应)轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。

2025-02-18 22:46:14 456

原创 力扣 hot 100 —— 15.三数之和

简单易懂算法讲解

2025-02-18 22:43:26 287

原创 力扣第一题 哈希解法 O(n)时间复杂度

题目:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出 和为目标值target的那俩个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。题解分析:假设target = 9。i = 0。哈希表中没有7,将2存入哈希表。i = 1。哈希表中有2,返回2的索引0和当前索引1,即[0, 1]。

2025-02-13 23:27:15 1149

原创 c++面试最强八股总结!!!

根据现主流c++八股文内容及与多位大佬(均拿到大厂offer)的大厂面试问题进行总结;宇宙无敌超级完备c++八股文总结。

2025-02-13 19:13:17 198

原创 github 本地仓库上传及报错处理

这里这个文件夹是我原来导入的一个仓库,我都在一个大的文件夹里存放,这不影响,右键点击gitbash here打开 输入 git clone 你仓库的链接,然后就会看到一个你仓库名的一个文件夹,然后你就可以将自己要上传到git上的文件,放到这个文件夹下了,接下来我会具体演示一下。这里为上传部分,关于gitbash安装配置,读者可自行搜索,由于已经安装完成,未进行截图保存,这里便不做赘述。这里记得将用户名和仓库名改为自己的,回车后重新运行 git push 即可。git push 显示无法连接到git。

2024-06-13 17:04:43 720

原创 fastdda+ubuntu20.04+vscode实现(实测最简单安装教程)

fastdda+ubuntu20.04+vscode实现及各种问题处理

2024-04-10 21:38:18 1121 1

原创 保姆级网站搭建教学,教你手把手学会搭建属于自己的网站

以上就是从零开始到搭建完自己的网站,及实战演练的全过程,由于购买域名,服务器都是租的,一个月基本会在200左右的费用,大家自行决定是否搭建,可以开一个月自己学习实操体会一下搭建网站的知识。在宝塔面板—文案—终端(之前没有安装docker的话需要在面板上进行安装推荐清华镜像比较快,如果安装失败,就在软件商店进行安装)—终端下输入docker 回车。在宝塔面板选择文件,点击后选择与你域名相同的那个文件夹(例如chat.01_aide)打开里面就是你网站的源代码文件,可以进行你的网站的设计。

2024-04-02 16:07:21 7486 2

原创 基于python的dds通信实现

dds通信,需要俩个主体,发布者与订阅者,这也是强大之处,一个发布者可以被多个订阅者订阅(接收信息),发布者通过发布不同的主题信息,订阅需要的主题信息完成二者的通信。由于dds的强大通信能力,俨然成为了主流通信方式。

2024-03-18 17:16:55 2341 19

原创 2023.12.3 每日一题 最大点数 很巧秒的做法,数学思维的开拓

然后遍历计算最后一张与第k张的大小(即将假设的最后一张与真实的最后一张进行比较,如果全部都更换了也就回到了上面所说的,每次将头尾俩段较大的取出),然后更新答案。输入:cardPoints = [1,79,80,1,1,1,200,1], k = 3。输入:cardPoints = [1,2,3,4,5,6,1], k = 3。输入:cardPoints = [9,7,7,9,7,7,9], k = 7。解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。

2023-12-04 21:41:43 332 2

原创 leetcode 12.2 每日一题 拼车(近双百解法,绝对通俗易懂)

举例: 负数表示这点没人上车,有下车 注意这里举例有些片面,没有重合点位,但是实际会有,如果不好理解,可以先看代码,然后自己找个重合地点的进行手推,帮助理解。trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,输入:trips = [[2,1,5],[3,3,7]], capacity = 4。输入:trips = [[2,1,5],[3,3,7]], capacity = 5。眼过千遍,不如手敲一遍,大家共勉!

2023-12-02 20:09:24 619

原创 python 实用函数——collections模块之Counter()

python 实用函数——collections模块之Counter()

2023-11-30 12:01:57 992

原创 力扣 41 42.接雨水问题详细讲解,保证看完必会接雨水问题!!!时间复杂度最优解 o(n)

当是间隔形式时桶底需重新计算(就是高度数组连续,但是实际摆放有间隔,因为咱们是根据数组进行操作,所以此时需要计算桶底长度)若有1 ,则其前后俩数进行判断,如果前后俩数差大于1(注意前一个数是负数的情况需进行判断),则加入比后一个数大1的数。本算法借鉴于力扣灵神思路,进行了整合及解释,更易懂,当然眼看千遍不如手敲一遍,建议大家可以手推一遍更易理解。先对数组排序,便于判断,由于要加入此时所缺最小正整数,1 为最小正整数。输入:nums = [3,4,-1,1]41. 缺失的第一个正数。欢迎大家评论区提问!

2023-11-29 21:06:59 520

原创 力扣 39. 组合总和 递归解法

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,2 和 3 可以形成一组候选,2 + 2 + 3 = 7。对于给定的输入,保证和为 target 的不同组合数少于 150 个。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。你可以按 任意顺序 返回这些组合。7 也是一个候选, 7 = 7。

2023-11-28 21:11:00 223

原创 python 实现队列(类似栈实现,采用列表)

队列特点:先进先出 (栈特点:先进后出)在此依托于 python中的列表,简单实现,由于列表的强大属性,实现循环队列,双队列也很简单,本例主要实现,入队(头,中,尾),出队(头,中,尾)

2023-11-28 17:58:58 267

原创 leetcode 32最长有效括号 34在排序数组中查找元素的第一个和最后一个位置

给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。在这个例子中,i是索引,j是s中的元素。如果数组中不存在目标值 target,返回 [-1, -1]。解释:最长有效括号子串是 "()()"输入:s = ")()())"输入:s = "(()"

2023-11-22 20:37:23 164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除