- 博客(286)
- 收藏
- 关注

原创 【项目】 云备份
搭建云备份服务器与客户端,客户端程序运行在客户机上自动将指定目录下的文件备份到服务器,并且能够支持浏览器查看与下载,其中下载支持断点续传功能,并且服务器端对备份的文件进行热点管理,将长时间无访问文件进行压缩存储。
2023-09-18 02:01:41
280
原创 C++进阶知识复习 31~38
参考博客智能指针unique_ptr是C++11中新引入的一个智能指针它的思想是独占所有权 保证资源不会被重复释放它独占所有权的方式是禁用拷贝构造参考博客智能指针share_ptr通过引用计数来让多个指针管理一个资源 避免重复释放的问题它本身是线程安全的 多个对象对其或者对其管理的资源进行操作的时候则不是 这个时候就需要加锁来避免问题参考博客智能指针weak_ptr是C++11中提出来的三大智能指针之一 它通过观察资源但不持有资源的方式来解决 shara_ptr的循环引用问题。
2025-04-03 16:40:30
546
原创 【C++ 算法进阶】算法提升二十四
现在给定你一个字符串s2 现在请问字符串s1中是否有一个子串包含s2 如果有 返回其中最小的一个子串。第一刀的位置我们是无法确定的 只能一个个尝试 但是确定了第一刀的位置之后 后续的位置就相对确定下来了。我们可以使用一个map来记录s2中字符出现的次数 使用一个变量all来记录滑动窗口区间的欠账。我们可以先将整个数组排序 然后求出前面每个数字能组成的数据对是多少 (其实就是数组的长度)给定一个数组arr 数组是无序的 数组中每两个数字都可以两两组成一个数据对。时间复杂度为N * LogN。
2024-11-28 11:21:16
474
原创 【C++ 算法进阶】算法提升二十三
我们可以设置一张哈希表 每当哈希表不为空或者候选数目存在哈希表中的时候 我们可以将此数添加到哈希表中或者让此数的血量加一。我们注意到水王的一个明显特征 如果这个数是水王 哪怕其他所有数一对一和水王数同归于尽 那么最终剩下的也肯定是水王数。超级水王问题:给你一个数组,出现次数大于数组长度的一半的元素称之为水王数,怎么能快速找到水王数?现在让你将这个数组分为左右两个数组 请问这两个数组中的最大值相减的绝对值最大是多少。一个数组 假设排序后是依次递增1的 我们就可以将这个数组称之为可整合数组。
2024-11-25 09:50:43
555
原创 【C++ 算法进阶】算法提升十七
假设我们现在给定一个数字K 根据题目一的思路 从右上角开始找我们很轻松就能找到有多少个数小于K 并且能找到小于等于K且最接近K的数字是什么。如果说我们能找出小于等于M 并且距离M最接近的数字是多少 那么我们通过不断的二分 就可以找到数组中第K小的数。假设没有重复的字符的话 我们每次添加新字符时就相当于将原来的所有集合再乘以2 就能得到新加字符后的总集合。我们假设一个普遍位置的 dp[i][j] i表示字符串s0~i位置 j表示字符串t的0到j位置。此时我们要求的是dp[I-1][J-1]
2024-11-17 17:03:41
596
原创 【C++ 算法进阶】算法提升十六
据说著名犹太历史学家Josephus(弗拉维奥·约瑟夫斯)有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。假设range大于的range + 1的话 我们就无法组成range + 1这个数。假设现在有一个正数数组 这个正数数组中有1这个数。如果数组的长度很大 此题应该如何解?
2024-11-17 12:46:39
1533
原创 【C++ 算法进阶】算法提升十四
需要注意的是 我们这里的期望数字是会有一个最大结果的 这个最大结果就是这个数组中所有数都是正整数并且是 0 1 2 …给定你一个数组 这个数组中的数可能有正数负数和零 现在要求你求出在这个数组中 确实的最小正整数。而恰巧 我们可以用右数组的边界来表示期望数字的最大结果 每次右数组往左扩的时候这个结果都减小。我们设置一个数组dp dp[i]的含义是 以i位置结尾的时候有效括号的数目是多少。本题其实就是利用了二叉搜索树的性质 就是中序遍历的话 遍历出来的结果是有序的。那么缺失的最小正整数就是1。
2024-11-11 10:15:08
783
2
原创 【C++ 算法进阶】算法提升十三
每台洗衣机内存放着的衣服不固定 现在可以从左到右移动 每次移动每台洗衣机可以将一件衣服向左或者向右移动。又比如 左边少了12件 右边也少了12件 这说明都集中在当前位置了 那么就需要12 + 12轮才能平分。二是根据题目找信息 题目中给出了三种范围 那么我们肯定可以很自然的想到这三种范围代表什么呢?假设现在有1~N N张牌 每张牌的序号就代表着他的大小 (1 2 …题目为 有N台洗衣机 有 X件衣服在各个洗衣机内 现在要求洗衣机平分衣服。这是谷歌的一道面试题 实际上是一道非常简单的动态规划题目。
2024-11-10 20:52:51
1440
原创 【C++ 算法进阶】算法提升十一 十二
假设我们现在想要的第一个数字是2 那么当2来到之后只需要和3 头尾相连 我们打印整个单链表就能得到我们想要的结果了 (当然我们要记得处理下头尾表数据)我们可以在哈希表中 统计aim每个字符的个数 在第一次形成窗口的时候让这些字符的个数减去窗口中字符的个数 (可以小于0)只有当字符串的i j位置相同的时候我们可以使用这一项 dp[i][j] = dp[i+1][j-1]我们要打印的是一个连续的区间 所以说等数据到了之后让其跟我们现在需要的数据对比的方式肯定不可行。那我们想想看 怎么才能让一段数据连续呢?
2024-11-10 14:11:16
978
原创 【C++ 算法进阶】算法提升十
显然是可以的 知道左右两个区间的运算结果之后 我们只需要结合中间的split运算符 就可以算出最终的答案了。这样分主要原因是后面dp[i][j] = dp[i-1][j] +dp[i-1][j-1]+…要想知道跳跃的最小次数 我们则需要遍历整个数组 这里我们可以使用三个变量来找出最终的答案。所以说我们可以建立这样子的一个dp表 dp[i][j] = 数字i有k个逆序对的数目。我们遍历整个数组的时候只需要不断的更新这三个值就能得到最终答案了。接下来我们就可以推dp[i][j]的普遍方式了。
2024-11-04 09:19:50
981
原创 【C++ 算法进阶】算法提升九
既然我们知道前面有且之后12位置 能改变我们的函数参数 那么我们就把12的情况全排列出来 之后函数里面就只要考虑末尾N-1位置的数就行了。假设灯排列成一条直线的时候 我们想一下 如果一盏灯只能改变一个位置的值的时候我们是不是只需要使用一个变量就能完成整个遍历函数。之后计算普遍位置的时候我们只需要往前找小于自己的数 然后看他们的dp值 找出其中最大的dp值加一即可。我们可以设置一个数组dp 该数组的dp[i]的含义是 表示以i位置结尾的递增子序列的最大值。
2024-11-02 16:02:27
695
原创 【C++ 算法进阶】算法提升八
给定一个字符串str str表示一个公式 公式里面可能有整数 + - * / 符号以及左右括号 返回最终计算的结果。
2024-10-31 21:42:09
977
原创 【C++ 算法进阶】算法提升七
但是这种方法的时间复杂度显然是过高的 因为每次拼接字符串的时候我们都需要遍历整个数组 导致了很多无用的遍历 (我们只需要遍历set中有的就行了)也就是说 如果我们当前位是0 走0号线 1号线都是有理由的 但是我们无法比较0和1号线下面谁更好 所以说前缀树的方式是行不通的。这个时候我们只需要用一个map来记录下各个单词可能走的路径 并且继续下各个单词可能的节点 就能极大的优化查找字符串的效率。这道题和算法提升六中的异或有着明显的不同 因为在&运算中 只要有一个数是0 最后的结果就是0。
2024-10-25 13:31:07
1000
原创 【C++ 算法进阶】算法提升四
数组为 {3 , 2, 2 ,3 ,1} 查询为(0 ,3 ,2)这个查询的意义是 在数组下标0~3这个范围上 有多少个2 (答案为2)假设现在给你一个数组arr 假设我们对于这个数组的查询十分频繁现在要求你返回所有的查询结果。
2024-10-19 19:52:40
708
原创 【C++ 算法进阶】算法提升三
给定三个参数 :二叉树的头结点Hrad 树上某个节点targert 正数K从target开始 可以向上或者向下走返回与target的距离为K的所有节点。
2024-10-17 09:50:42
846
原创 【Go语言分析 select case 】
注意 虽然说Go语言有死锁机制 会自动检测是否所有协程是否被阻塞 但是这是建立在所有协程都进入死锁的情况 如果说只是这一个协程阻塞 其他协程没有被阻塞那么此时不会发生panic错误的。如果说我们不想无限制的执行该select操作 那么我们可以设置一个类似超时器 设定一个超时时间 如果说在该时间内没有读取到数据 那么我们就终止该select。如果在规定时间内没有收到心跳(定时器的通道heartbeatTimer.C发出信号) 则会执行关闭连接的逻辑 并退出函数。上面的代码就是一段典型的无阻塞获取值的代码。
2023-12-11 15:44:29
511
原创 【Hello Go】Go语言面向对象
介绍Go语言中的面向对象特性 需要注意的是Go语言并不支持面向对象 而是使用了其他方式去支持面向对象的几个特性
2023-11-19 02:02:28
474
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人