- 博客(26)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 洛谷P1508(动态规划)如何才能吃的最多解析
题目描述正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中。某曰.上课,正当他饿得头昏眼花之时,眼前突然闪现出了一个n* m(n and m < = 200)的矩型的巨型大餐桌,而自己正处在这个大餐桌的一-侧的中点下边。餐桌被划分为了n*m个小方格,每一个方格中都有一个圆形的巨型大餐盘,上面盛满了令李大水牛朝思暮想的食物。李大水牛已将餐桌上所有的食物按其所能提供的能量打了分(有些是负的,因为吃了要拉肚子),他决定从自己所处的位置吃到餐桌的另一侧,但他吃东西有一个习惯一只吃
2020-10-31 22:10:38
728
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 快速解决克鲁斯卡尔和普里姆算法--C++实现(CSP通过)
关于此算法的思想. 具体可以参照最小生成树视频演示(bilibili上的)此视频演示是我的头号参照, 大量文字叙述算法只会帮倒忙, 必要部分进行画图陈述克鲁斯卡尔算法(有向图形式):先将其封装为一个个的方法, 方便代码重用/* 从上至下的方法作用: */int getIndexOfRepresentative(const int index);// 递归获取该编号节点的根节点索引void merge(const int index1, const int index2);// inde
2020-06-09 16:27:43
476
原创 MIT6.S081-2020-Lab: page tables
继续上次的xv6实验,从做完第一个实验后,到现在已经过去很久了6.S081-Lab: Xv6 and Unix utilities 操作系统实验分享。中途只做完了系统调用,也没有写上笔记。这次学习页表一章,从看书到看代码再到编写实验,花费了很多时间,遇到了很多坑,反反复复修改代码才得到正确的结果。还是和以前一样,对操作系统有兴趣的千万不要错过这个实验。这次的实验会接触到很多内核知识,尤其是编写实验代码过程中,将页表理论知识化为实际的代码,别说有多舒服了。分页可谓是操作系统中一个非常重要的思想,在操作系
2022-08-02 14:51:09
773
1
原创 6.S081-Lab: Xv6 and Unix utilities 操作系统实验
学习操作系统的时候,买了一本人民邮电出版社的-Operating Systems: Three Easy Pieces 中译版(操作系统导论)。从书中学到了很多关于操作系统的思想,出现一个问题,思考策略,并比较策略之间的利弊。整本书读起来十分有趣,当然我不是在这里打广告。当时只是学习了理论知识,书中所给的练习以及后面的实验都没有做过,当时在附录后面看到:xv6 实验,一直没来做。这些天,从网上找到了 xv6 实验对应的课程 6.S081,课程的 lab 是重点。这个 Lab 主要是 Shell 的一
2022-06-19 14:45:15
784
原创 MIT操作系统实验-XV6项目环境搭建
最近在学习操作系统课程,比较推荐的是 xv6项目。在开始前,先准备好一台 Linux 系统。对于 Windos10,可以选择安装 WSL 系统 Microsoft Store 添加 Ubuntu 20.04。当然,也可以选择 VMware 安装,这里推荐 Ubuntu 20.04.4 Desktop (64-bit)软件源准备在安装前,请确认自己使用的是国内镜像源;否则下列步骤很可能因为超时而失败!这边推荐的是 阿里开源镜像站,具体设置过程可以参照该文档。软件源更新环境准备我的环境是 Ubuntu 20
2022-06-09 20:00:53
3311
3
原创 剑指 Offer II 038. 每日温度
剑指 Offer II 038. 每日温度刷题第 12 天。GO!GO!GO!原题剑指 Offer II 038. 每日温度请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出: [1,1,4,2,1,1,0,0]示例 2:输入: temperatur
2022-03-09 10:34:25
136
原创 剑指 Offer II 035. 最小时间差
剑指 Offer II 035. 最小时间差原题给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。提示:2 <= timePoints <= 2 * 104timePoints[i] 格式为 "HH:MM"解题思路先分析下给定两个时间, 如何找到这两个时间的最小时间差。设时间 t1、 t2, 时间差 diff; (以同一天为标准, t1 < t2)。在下面的表述中, 我们使用分钟表示。如果计算当天的
2022-03-08 20:03:48
81
原创 剑指 Offer II 032. 有效的变位词
剑指 Offer II 032. 有效的变位词原题给定两个字符串 s 和 t ,编写一个函数来判断它们是不是一组变位词(字母异位词)。注意:若 *s* 和 *t* 中每个字符出现的次数都相同且字符顺序不完全相同,则称 *s* 和 *t* 互为变位词(字母异位词)。1 <= s.length, t.length <= 5 * 104s and t 仅包含小写字母解题思路这道题和之前的 剑指 Offer II 014. 字符串中的变位词 / 剑指 Offer II 015. 字符串
2022-03-07 15:09:44
193
原创 剑指 Offer II 029. 排序的循环链表
剑指 Offer II 029. 排序的循环链表原题给定循环单调非递减列表中的一个点,写一个函数向这个列表中插入一个新元素 insertVal ,使这个列表仍然是循环升序的。给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列表中最小元素的指针。如果有多个满足条件的插入位置,可以选择任意一个位置插入新的值,插入后整个列表仍然保持有序。如果列表为空(给定的节点是 null),需要创建一个循环有序列表并返回这个节点。否则。请返回原先给定的节点。0 <= Number of Nodes
2022-03-04 17:19:43
897
原创 剑指 Offer II 009. 乘积小于 K 的子数组
剑指 Offer II 009. 乘积小于 K 的子数组原题剑指 Offer II 009. 乘积小于 K 的子数组解法1: 枚举最直观的解决方法就是枚举每一个子数组左边界和右边界, 并查看该子数组的乘积是否小于 k。设子数组的乘积为 product,设子数组的左边界下标为 i (0 <= i < nums.length), 右边界下标为 j; 开始时 i = j, 也就是该子数组只有一个元素的时候; 此时, product = nums[j]。当 product < k
2022-03-02 10:58:13
175
原创 剑指 Offer II 008. 和大于等于 target 的最短子数组
剑指 Offer II 008. 和大于等于 target 的最短子数组原题给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 01 <= target <= 1091 <= nums.length <= 1051 <= nums[i] <= 105解题思路
2022-03-02 10:55:36
96
原创 剑指 Offer II 007. 数组中和为 0 的三个数
原题给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ;请找出所有和为 0 且 不重复 的三元组。这也是一道双指针类型的题目; 特殊的是, 这道题目要求的是三个数, 经常遇到, 也经常不知道怎么做, 所以这道题还是值得好好记下。解题思路要把双指针的思路应用到三元组上, 就必须将问题化为双指针类型。设数组元素 a,b,c, a + b + c = 0;则 -a = b + c;先针对一个元素 a, 从数组中找到两个元
2022-02-27 20:18:24
352
原创 剑指 Offer II 004. 只出现一次的数字
剑指 Offer II 004. 只出现一次的数字原题给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。解法一: 快排 + 顺序查找解题思路这是我解该题的第一想法: 既然每个数字要么出现 1 次, 要么出现了 3 次; 那么只要数字是按顺序排列, 数组中元素要么重复出现三次, 要么就出现一次。我们对数组进行 sort 后, 在保证索引不越界的情况下, 我们可以进行如下比较从第1个元素开始, 查看其是否与第3个元素相
2022-02-27 20:16:41
95
原创 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
剑指 Offer II 003. 前 n 个数字二进制中 1 的个数题目原意给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。注意:整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231 − 1解题思路这道
2022-02-27 20:14:50
179
原创 [Java]剑指 Offer II 001. 整数除法
题意: 给定两个整数 a 和 b ,求它们的除法的商 a/b.要求不得使用乘号 '*'、除号 '/' 以及求余符号 '%' 。除法结果应截去小数部分此题拿到手有点懵, 分析题意就知道这道题目具体要考查的内容 1. 思考除法的底层实现 2. 除法? a / b = k····c, c为余数, 舍去解题思路锁定表达式中的: kk是整数, 因此可以用二进制表示由乘法反推 a 的等式:b*k + c = a;此题和剑指 Offer 16. 数值的整数次方相似—通过 k 的位模式累加至 a。
2022-02-27 19:50:56
312
原创 剑指 Offer II 010. 和为 k 的子数组
剑指 Offer II 010. 和为 k 的子数组题目要求给定一个整数数组和一个整数 k **,**请找到该数组中和为 k 的连续子数组的个数。1 <= nums.length <= 2 * 104-1000 <= nums[i] <= 1000-107 <= k <= 107解题思路题目要求的是 “连续子数组”, 因此此题和排序没关系;题目还要求的是子数组的个数。数组有两个属性, 左边界和右边界, 我们设其分别为 i, j(j >= i)假
2022-02-26 19:21:51
249
原创 剑指 Offer 专项突击版 刷题计划目录(持续更新中)
Github仓库本刷题计划的所有代码和题解同步至我的个人仓库, 欢迎查看。Github目录第一天剑指 Offer II 001. 整数除法剑指 Offer II 003. 前 n 个数字二进制中 1 的个数第二天剑指 Offer II 004. 只出现一次的数字第三天剑指 Offer II 007. 数组中和为 0 的三个数剑指 Offer II 008. 和大于等于 target 的最短子数组.md剑指 Offer II 009. 乘积小于 K 的子数组.md...
2022-02-25 16:33:05
183
原创 剑指 Offer II 009. 乘积小于 K 的子数组
剑指 Offer II 009. 乘积小于 K 的子数组解法1: 枚举最直观的解决方法就是枚举每一个子数组左边界和右边界, 并查看该子数组的乘积是否小于 k。设子数组的乘积为 product,设子数组的左边界下标为 i (0 <= i < nums.length), 右边界下标为 j; 开始时 i = j, 也就是该子数组只有一个元素的时候; 此时, product = nums[j]。当 product < k 时, 说明存在一种子数组, 使得乘积小于 k; ++resul
2022-02-25 16:30:08
259
原创 力扣#1116. 打印零与奇偶数-[C++] 信号量解决多线程顺序输出问题 (28ms, 6.7MB)
题意解析其实和前面两个题目一样, 也是顺序问题.题目给定三个线程异步调用同一个对象的三个方法, 要求在输出 1 ~ n 的奇偶数前, 先输出 0。对于每个输出, 我们先执行 zero() 方法, 后续执行的方法, 根据要输出的数的奇偶性而定目标分析给定一个数 n我们假设一个数 x, 初始值设为 1, 从 0 开始, 逐次递增至 n我们要确保先执行 zero() 输出 0 (zero() 方法没执行前, even() 和 odd() 方法必须阻塞, 而 zero()必须先执行)执行完 zer
2021-10-09 17:14:19
229
原创 LeetCodeP208.实现Trie(前缀树)
力扣208.实现Trie(前缀树)前缀树介绍先来看字典树树的大致结构可以看到, 我们使用每条边表示一个字符, 每个结点使用一个唯一的序号标识比如1->2->5 表示的字符串是 aa1->3->7 表示的字符串是 ba…通过图可以知道, 只要遵循上述约定, 假如有两个不相同的字符串有相同的前缀, 则它们可以共用一些结点, 但是这两个字符串的最后一个字符所在边指向的结点序号必定不同, 这个结论对n个不同字符串同样成立题目要求Trie() 初始化前缀树对象。
2021-05-23 14:48:53
148
原创 判断二维坐标点是否在三角形内部(Java)
三角形应用需求字段三角形用三个而坐标点表示, 每个点的坐标都是 double 类型方法应当能够判断对应点是否在三角形内应当能够得到三角形的面积应当能够得到三角形的周长代码import org.junit.Assert;import java.awt.geom.Line2D;/** * @author LeXin Huang * @date 2021年04月16日 8:07 */public class MyPoint2D { private final Doub
2021-04-16 14:13:33
530
原创 小白也能安装:Ubuntu20.04 安装 RabbitMQ
Ubuntu 20.04(阿里云) 安装rabbitmq开始我使用的是阿里云的轻量级服务器 Ubuntu20.04 系统镜像作为平台因为要使用 RabbitMQ, 想着步骤有点繁琐, 写篇记一记安装基本依赖项更新源sudo apt-get update -y 下载签名密钥和软件包所需的先决条件sudo apt-get install curl gnupg debian-keyring debian-archive-keyring -y 添加存储库签名密钥(指示易于信任由该密钥签名的软
2021-04-06 21:14:37
945
5
原创 求币值最大化问题---动态规划(附C++代码)
题目描述给定一排n个硬币,其面值均为正整数c1,c2,…,cn,这些整数并不一定两两不同。请问如何选择硬币,使得在其原始位置互不相邻的条件下,所选硬币的总金额最大抽象后要求从一个连续正整数数组中取若干个元素, 每个元素都不相邻, 且元素和最大因为每个元素值都是正整数, 所以能多取一个元素, 就多取一个, 能取大的, 就取大的模拟用动态规划求解这个问题时, 我们先来分析一下, 然后获取状态转移方程假设我们从左到右取硬币…状态转移方程归纳dp[0] = a0;dp[1] = a
2020-11-08 21:31:39
1868
原创 红黑树数据结构讲解(附Java实现代码)
2-3查找树定义1.任意空链接到根节点的路径长度都是相等的2. 4-结点变换为3-结点时, 树的高度不会发生变化, 只有当根节点是临时的4-结点时, 分解根节点后, 树的高度+13.普通二叉查找树是自顶向下生长的, 2-3查找树的自底向上生长的都是2-3查找树(插入节点过程中产生的4-结点是临时的!)红黑树定义在满足2-3查找树的前提上, 使用对结点间链接的==“标记” == 以颜色有两种:红色 模拟2-3查找树中的3-结点黑色 普通的结点链接形式性质:红链接均为左连接2
2020-10-27 20:20:06
326
2
原创 四种常用排序方式(Java实现)
插入排序排序原理:1.把所有的元素分为两组,已经排序的和未排序的;2.找到未排序的组中的第一个元素,向已经排序的组中进行插入;3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位;原理如图:第一次操作: 指针指向第二个元素, 将其与前一个元素进行比较如果满足条件, 则进行交换, 同时指针前移一位, 重复上述步骤, 直到指针到达数组的头否则说明已经成有序列, 退出当前循环;第二次操作: 指针指向第
2020-08-02 21:42:57
323
原创 Maven工程修改pom.xml文件后, Java编译报错:不支持发行版本XX解决方法
写完代码运行后, 编译报错查看complier版本和project structure的目标版本, 都是5, 每次更改pom文件后都是这样子问题出在Maven工程的配置上, 找到该文件settings.xml进行修改(没有的话, 手动新建文件夹)在profiles根路径下, 依据想要的java版本进行添加, 这里设置的是jdk9版本保存文件即可生效 <profile> <id>jdk-1.9</id>
2020-07-29 13:48:17
887
JDBC学习常用jar包整合
2020-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人