自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode-526 优美的排列

Leetcode-526 优美的排列第二天再写博客是真的有用,今天写昨天做的题,第一眼竟然是我做过吗?真的离谱,第二天做还是有助于回忆的。题目假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除

2021-08-17 21:22:06 104

原创 Leetcode-576 出界的路径数

Leetcode-576 出界的路径数很长时间没写了,做题倒一直没拉下。但是现在一回顾,发现之前做的题目好多都不会了。还是继续题解吧,不求写题解将全部题目都记住,只是做个记录,以便以后的复习。题目给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColu

2021-08-16 23:51:52 219 1

原创 虚拟文件系统VFS(下)

8 索引节点操作struct inode_operations { int (*create) (struct inode *,struct dentry *,int, struct nameidata *); struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); int (*link) (struct dentry *,struct inode *,struct dentry *); int

2021-06-20 17:10:35 150

原创 Linux中断下半部和推后执行的工作

Linux中断下半部和推后执行的工作中断处理程序只能完成整个中断处理流程的上半部分,同时中断处理程序具有相当的局限性:中断处理程序以异步方式执行,并且有可能会打断其他重要代码的执行。因此,为了避免被打断的代码停止时间过长,中断处理程序应该执行的越快越好。如果当前有一个中断处理程序正在执行,在最好的情况下(如果IRQF_DISABLED没有设置),与当前中断同级的中断会被屏蔽;在最坏的情况下(IRQF_DISABLED被设置),当前处理器上所有其他中断都会被屏蔽。因为禁止中断相当于禁止硬件与操作系统通

2021-06-16 15:07:24 262

原创 虚拟文件系统VFS(上)

虚拟文件系统 VFS  虚拟文件系统(VFS)作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口。系统中所有文件系统依赖VFS共存、协同工作,程序利用标准的Unix系统调用对不同的文件系统,甚至不同介质的文件系统进行读写操作。1 通用文件系统接口  VFS使得用户可以直接使用Open()、read()、write()这样的系统调用而无须考虑具体文件系统和实际物理介质。  VFS将各种不同的文件系统抽象后采用统一的方式进行操作。同

2021-06-15 22:55:21 169

原创 实现一个最小的操作系统

实现一个最小的操作系统本实验在Vmware虚拟机的Linux环境下完成。准备工作:硬件VMware下Linux虚拟机:Ubuntu 18.04.5 LTS软件:汇编编译器NASM软盘绝对扇区读写工具:dd命令VMware的安装以及Linux镜像下载、虚拟机安装均可在网上找到相关教程。软件安装:nasm:在nasm官网上可以下载最新的压缩包解压后进入目录,分别执行./configure、make、sudo make install执行完毕后,nasm --ver

2021-05-23 19:02:53 493

原创 Linux中断和中断处理程序

Linux中断和中断处理程序由于处理器的速度与外设的速度相差很大,无法采取处理器向外设发出请求然后等待的方法。处理器与外设通信的方法:轮询:处理器定期对设备的状态进行查询(缺点:在不需要通信的情况下,处理器仍然需要周期性地重复执行)中断:一种特殊的电信号,由硬件设备发送给处理器。处理器接收信号后,由操作系统负责对数据进行处理中断随时可以产生,内核随时可能因为新到来的中断被打断。从物理层面讲,中断是一种电信号。由硬件设备产生,直接送入中断控制器的输入引脚中。中断控制器是个简单的电子芯片,将多

2021-05-21 11:12:21 394

原创 在github中存储markdown图片

1.首先,在github上建立仓库用于存放Image(经过测试,好像选择private还是public都没有影响)。2.将项目clone到本地,将图片放在对应的目录,并push到仓库中,这样在仓库中就可以看到图片了。3.markdown中插入图片的格式为,其中[ ]存放的是显示的图片名,括号中存放的是图片链接,在这里也就是github的网址。但是存放网址后会出现如下图所示的错误:这是因为此时的链接格式如下:https://github.com/用户名/仓库名/blob/main/路径名/xx.pn

2021-05-18 22:17:14 1083

原创 Leetcode-421 数组中两个数的最大异或值

对我本人来说,久违的题解了,果然,惰性是最容易产生的。今日的每日一题之所以进行记录,是因为在题目中可以用到字典树,而这一概念虽然简单,但是每次遇到总是想不起来是什么意思,认为自己不会,因此进行记录。题目给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。提示:1 <= nums.length <= 2 * 10^40 <= nums[i] <= 2^31 - 1输入:nums = [3

2021-05-16 22:04:26 80

原创 Linux 设备树的加载与匹配

之前学习了platform设备与总线是如何匹配的,但是在读某一驱动程序中,该设备由dts文件描述,设备的匹配与platform设有所不同,因此记录下来。什么是设备树在内核源码中存在大量对板级细节信息描述的代码,但是对于内核而言,这些代码对于内核毫无意义。 ARM内核版本3.x引入了Flattened Device Tree(FDT),这是一种描述硬件资源的数据结构,通过BootLoader将硬件资源传给内核,使得内核和硬件资源描述相对独立。采用Device Tree后,许多硬件的细节可以直接透过它传递

2021-05-03 21:34:44 3194

原创 Leetcode-87 扰乱字符串

这一题还是没有什么思路,但是在看完题解后才发现,原来是被题目描述给吓到了,其实没有想象中的那么难,其使用的算法是搜索。题目描述使用下面描述的算法可以扰乱字符串 s 得到字符串 t :如果字符串的长度为 1 ,算法停止如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。随机 决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一

2021-04-18 18:32:59 89

原创 platform设备与驱动的注册与匹配

这段时间在搞嵌入式相关的知识,其中很多地方涉及到了驱动编程,对驱动程序文件的结构有所了解,但是其原理不是很清楚,因此本文主要对platform device的注册流程进行介绍,Linux内核代码版本为5.7.19。1.platform在关注驱动程序注册的过程前,首先需要明确什么是platform,什么样的设备称为platform device。基于分层的思想,Linux的设备与驱动进行分离,分为设备、总线、驱动三个层次,多个设备与多个驱动通过总线相连,总线将设备与驱动进行绑定,系统每注册一个设备,回去

2021-04-07 16:37:55 680 1

原创 Leetcode-1143 最长公共子序列

又是久违的题解了好久没有写过了。这一题其实不难,比较典型的动态规划。但是写题解的原因主要是在一开始做错了,边界条件设置问题,因此在这里记录一下。题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde"

2021-04-03 17:23:15 51

原创 Leetcode-456 132 模式

久违的题解,大概近一周的时间没有写了。题目说明给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。进阶:很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn)

2021-03-25 23:40:47 92

原创 Leetcode-115 不同的子序列

这一题很头疼,一开始不会,看了题解认为很简单。但是在做的时候发现细节很多,花了大量的时间才想出来。但是还是有一些需要回顾一下。题目描述给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)题目数据保证答案符合 32 位带符号整数范围。输入:s = "rabbbit", t = "rabbit"

2021-03-17 22:19:05 72

原创 Leetcode-331 验证二叉树的前序序列化

人千万不能有惰性,两天没写题解,就不是很想补之前的题解了,但是今天必须纠正这个事情,要开始补题解了。题目要求序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,

2021-03-13 17:43:47 90

原创 Leetcode-224 基本计算器 && Leetcode-227 基本计算器 II

今天的题目其实就是字符串处理,比较常见。当然我得承认,这类题目做的比较少,但是在数据结构中常见,而且会告诉我们可以用栈做。而这道题目也反映出我本人眼高手低的问题,想了很长时间依然错误。接下来我将在讲述解法的同时说明我本人的问题。题目说明实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。输入:s = "1 + 1"输出:2提示: 1 <= s.length <= 3 * 10 ^ 5 s由数字、'+'、'-'、'('、')'、和 ' ' 组成 s表示一个有效的表达式

2021-03-10 22:33:20 191

原创 Leetcode-131 分割字符串 && Leetcode-132 分割字符串II

最近两日的每日一题题目相似,其实方法也可以用回溯。但是Leetcode-132中,如果用之前的回溯会发现超时,此时对于回文数的判定需要用动态规划的方法减少时间复杂度。Leetcode-131给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。输入:s = "aab"输出:[["a","a","b"],["aa","b"]]本题其实与Leetcode-46 全排列类似,可以用回溯的方法进行遍历,得到所有

2021-03-08 23:25:19 184

原创 Leetcode-46 全排列

在做Leetcode的每日一题时,发现用到了回溯的知识点,类似的题目之前系统的刷过但还是忘了,因此找到了比较经典的问题进行复习。题目要求:给定一个 没有重复 数字的序列,返回其所有可能的全排列。输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解答很明显,我们需要将所有情况列举出来,但是在这个过程中,数组中的每个元素只能列举一次。因此,很容易的想到需要一个数组来存储每个元素的遍历

2021-03-07 19:25:26 70

原创 #ifdef、#ifndef

今天在阅读源码的时候发现如下所示的代码#ifndef XX_H#define XXH……#endif 之前对类似的宏定义并没有详细的了解,在此做个记录。预处理命令可以改变程序设计环境,提高编程效率,但本身并不是 C 语言的组成部分,因此不能直接进行编译,必须在对程序编译之前,先对程序中这些特殊的命令进行预处理”。经过预处理后,程序再由编译程序对预处理之后的源程序进行编译处理,得到可供执行的目标代码。C 语言提供的预处理功能有三种,分别为宏定义、文件包含和条件编译。ifndef主要含义是当没

2021-03-05 23:12:46 238

原创 Leetcode-232 用栈实现队列

栈模拟队列是一个经典问题,因此将其记录下来。与队列不同的是,栈是一个先进后出的数据结构,而队列是一个先进先出的数据结构,很容易想到想用栈模拟队列需要多个栈。方法一 (入队O(n), 出队O(1))该方法是在每个元素入队时对栈内的元素进行重排列,使得第一个进的元素位于栈顶。第二个栈的功能就是充当在重排列时的临时存储空间,具体过程如下图所示:原本模拟的队列中已经插入了1、2两个元素,元素已经在栈中排列好,接着将插入3这个元素,首先将第一个栈的元素全部放入第二个栈中,如图所示:此时将元素3放入第一个

2021-03-05 11:40:18 71 1

原创 Leetcode-300 最长递增子序列

在做了算法题长时间不复习后总是会遗忘,从今天开始写博客,力争用最简单的话语讲明算法,以便巩固与复习。题目:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。解答:方法一:动态规划(O(n^2))新建数组dp,dp[i]表示数组中前i个数中,以第i个元素结尾的最长递增子序列的长度。对于元素i需要遍历前i-1个数,并且在遍历第i个

2021-03-04 21:17:45 95 1

原创 Hadoop伪分布式环境搭建

Hadoop伪分布式环境搭建搭建环境hadoop的搭建在虚拟机上完成,具体的配置如下:虚拟机:VMWare Workstation Pro操作系统:Ubuntu20.04Hadoop:2.7.4JDK:1.8.0_271maven:3.6.3protobuf:2.5.0安装过程JDK安装将下载的JDK解压到目录/opt/local下,并在/etc/profile最后添加export JAVA_HOME=/opt/local/jdk1.8.0_271export JRE_HO

2021-03-02 14:57:38 72

空空如也

空空如也

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

TA关注的人

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