自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到阿熊的blog~~

代码仓库(gitee):https://gitee.com/in-september/c-start

  • 博客(64)
  • 收藏
  • 关注

原创 极简shell制作

通过我们之前所学Linux知识以及C语言的知识,到目前为止,我们完全可以独立完成简易shell的制作,那么话不多说,开始今天的话题!

2024-04-28 11:17:27 337

原创 Linux-程序替换

在Linux系统中,进程程序替换是一种重要的操作,通过进程程序替换,程序可以更新自己的代码和数据,让进程富有动态性和灵活性,话不多说,开始今天的话题。

2024-04-26 12:27:36 637

原创 Linux-进程控制

进程控制不仅仅是管理程序的执行顺序,还涉及到资源的分配等问题,那么话不多说,开始我们今天的话题!

2024-04-22 11:06:07 953 1

原创 Linux-进程控制

进程控制涉及到操作系统如何管理和控制运行在计算机系统中的各个进程。那么话不多说,开启我们今天的话题!

2024-03-29 18:40:00 1506 108

原创 进程地址空间

进程地址空间是操作系统提供给每个应用程序或进程的一块独立的内存空间,它决定了进程能够访问的内存范围以及内存布局。话不多说,开启我们今天的话题!

2024-03-22 23:49:16 1003 91

原创 Linux环境变量【终】

上次我们简单了解了一下环境变量这个概念,今天我们继续深入了解。话不多说,开启我们今天的话题!

2024-03-19 23:51:55 1930 42

原创 Linux初识环境变量

环境变量是一种非常重要的概念,它们对于系统的行为和应用程序的运行起着关键作用。那么话不多说,开启我们今天的话题!

2024-03-19 00:27:50 1085 20

原创 Linux下进程的调度与切换

在Linux操作系统中,进程的调度与切换是操作系统核心功能之一,它直接影响着系统的性能和响应速度。那么话不多说,开启我们今天的话题!

2024-03-17 22:53:52 2032 88

原创 【Linux】进程优先级

并发与并行不同,我们大部分人的电脑其实只有一个CPU,而进程通常会有多个,为了考虑资源分配等问题,每个进程都有自己的时间片,时间片用完就切换下一个进程,自己则重新排队,等待再次调度。在日常生活中,我们有很多排队的场景,公路上等红灯,在医院挂号,或者是在食堂吃饭等等,但是我们在公路上救护车可以无视红灯,医院里急诊病人可以优先挂号,以及食堂里老师肆意的插队…如果我们食堂的窗口远大于人数,如果我们自习室里的座位非常多,人却非常少,我们是不需要排队的,也就是说,当资源充足的时候,我们并不需要排队。

2024-03-16 18:01:42 1622 72

原创 【Linux】进程状态

在Linux操作系统中,进程状态是一个重要而又复杂的话题。了解进程状态可以帮助我们更好地理解操作系统的运行机制。那么话不多说,开启我们今天的话题。

2024-03-14 17:45:33 1958 53

原创 初识进程状态

为了搞明白正在运行的进程是什么意思,我们有必要了解进程的不同状态,那么话不多说,开始我们今天的话题!

2024-03-13 11:12:26 993 70

原创 初识Linux下进程

上回我们简单介绍了一下进程的概念以及让大家见到了运行中的进程,今天我们来了解更多进程相关知识,话不多说,开启我们今天的话题!

2024-03-11 00:40:34 1429 100

原创 LeetCode-1004. 最大连续1的个数 III

这题是一个很经典的滑动窗口的问题,结合我们之前做的滑动窗口的问题来看,滑动窗口出现的场景通常需要枚举数组所有情况,也就是暴力,然后我们在暴力的基础上进行优化。

2024-03-10 00:01:03 1170 5

原创 合并有序链&&反转链表(递归版)

递归逻辑三步走,首先看时候能拆分成重复子问题,再看如何执行递归,最后别忘记结束递归的边界条件!虽然题目很简单,但是以递归的方式解决还是可以很好的锻炼我们的递归逻辑思维的,总得要一步一个脚印,慢慢的啃下这块硬骨头。

2024-03-06 12:33:08 980 9

原创 每日一题:LeetCode-LCR 007. 三数之和

💪💪当然切记不可😈走火入魔😈,每日打怪,拾取经验,终能成圣🙏🙏!我们还可以在暴力的基础上使用双指针解法,我们首先定住一个值,然后使用双指针来标记另外两个值,定住的值不动,双指针遍历剩下的数组元素,找出所有正确的三元组,尾插进二维数组里,数组遍历完,定值再向右遍历,双指针重置。【1】当固定值不变的时候,左指针的的下一个位置的值和上一个位置的值相等,再次进行比较,就是一个新的三元组,但是这个三元组的值和上一个三元组的值就重复了,不仅左指针如此,右指针也是如此,所以需要将左右指针指向和上一个值不同的值。

2024-01-12 12:51:40 1978 26

原创 认识Git

世界上最强大的分布式管理控制器——Git它来了!今天起,逐步更新Git的文章,那么话不多说,开启我们今天的话题!

2024-01-07 22:58:53 3423 90

原创 初识Linux下进程

我们在电脑上点开的一个个应用,其实就是一个个进程,进程仅仅如此吗?今天我们就来认识一下进程,那么话不多说,开启我们今天的话题!

2024-01-02 22:26:53 3627 99

原创 浅谈冯诺依曼体系和操作系统

我们常见的计算机,像笔记本,台式机等,不常见的计算机,像服务器,大部分都遵守冯诺依曼体系结构。那冯诺依曼体系结构究竟是什么呢?话不多说,开启我们今天的话题!

2023-12-31 19:03:21 2002 52

原创 Linux开发工具——gdb篇

编写代码我们使用vim,编译代码我们使用gcc/g++,但是我们,不能保证代码没问题,所以调试是必不可少的。与gcc/vim一样,Linux下的调试功能也是独立的一个工具——gdb那么我们话不多说,开启今天的话题!

2023-12-29 18:33:41 1647 70

原创 每日一题:LeetCode-LCR 179. 查找总价格为目标值的两个商品

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!而要与target值进行比较,这里有三种情况,一种是大于target值,一种是小于target值,最后就是等于target值。其实经过前面这些题的练习,这题的双指针是很容易就想到的,左右位置的值相加进行比较,再做出对应的行为。,当左右指针指向的值相加小于target值,左指针就自增,向后移动,因为是一个升序数组,所以。

2023-12-28 23:44:48 688 11

原创 快速上手makefile自动化构建工具

在windows下,很多东西都是编译器直接帮你做好的,而在Linux下并不是这样,如果也想要实现自动化,就要会写makefile,那么话不多说,开启我们今天的话题!

2023-12-28 18:15:28 2212 44

原创 Linux开发工具——gcc篇

gcc的使用gcc的使用我们前面已经学习了使用vim来编写代码,我们也知道了,Linux下的工具都是各自独立的,vim用来编写代码,我们如何执行代码呢?这就需要用到gcc/g++了,那么话不多说,开启我们今天的话题!

2023-12-25 11:39:33 2525 85

原创 Linux开发工具——vim篇

*三种模式:**正常模式插入模式底行模式我们一共有12种总模式,这里是常见的三种模式,大家有兴趣可以自己查阅资料。打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。

2023-12-19 23:44:13 3717 79

原创 每日一题:LeetCode-LCR 016. 无重复字符的最长子串

这题使用双指针暴力写法也不是很简单,尤其是在右指针回退那里,一不小心就容易出错,而我们使用滑动窗口来解决问题,虽然代码量很少,但是却很不好想,滑动双指针的题做多了可能你觉得滑动双指针不难,可是我认为,我们能想到这题使用滑动双指针更加重要。3、左指针移动之后,我们就与上一次记录的不重复子串进行比较,返回较大值。

2023-12-18 22:40:57 867 15

原创 每日一题:LeetCode-611. 有效三角形的个数

9这个位置的值已经枚举完了,那么我们将right指针向左走一步,重复上述步骤,但是如果当nums[left]+nums[right]<nums[nums.size()-1]时,我们就要移动左指针了,如果当两指针相遇时还没有大于比较值的数,那么左边的情况也不需要再枚举了,因为递增数组1,最大的两个数相加都没有大于比较值,更何况比他们要小的值,所以当两指针相遇时,以当前比较值为基准的情况已经全部枚举完成。还是太高了,我们可以想办法优化一下,三层for循环时间复杂度过高,那还有什么方法能够再优化一下呢?

2023-12-17 10:15:56 402 10

原创 C语言实现贪吃蛇【完整版】

实现过程使用了WIN32的一些API,这里简单介绍一下这些API的功能。

2023-12-14 09:37:51 3850 95

原创 Linux权限详解

目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。如果对你有帮助的话,还望能留下三连支持一下博主~~

2023-12-10 22:05:30 1921 91

原创 每日一题:LeetCode-11.盛水最多的容器

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!开启我们今天的斩妖之旅吧!但是我们的暴力解法时间复杂度是比较高的,对于这题来说,暴力解法应该是不能通过的,有兴趣的小伙伴可以自己尝试。其实这题的双指针写法很难想,只能说多做,累积经验,这类型的题目接触多了或许就可以秒杀,反正我是做不到。首先,我们可以使用暴力解法,两层for循环枚举所有情况,枚举完所有情况将最大的值返回即可。

2023-12-07 22:57:35 536 13

原创 每日一题:LeetCode-75. 颜色分类

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!这题被标为了中等,还是有一定难度的,但是如果你很熟悉快排的过程那么这题对你来说就是小case了,因为这题其实就是以1为基准值,0甩到左边,2甩到右边,很多东西都是融汇贯通的。这题要求我们将三种颜色排好序,其实也就是对0,1,2的划分而已,如果你看了我前面写的题目的话,有一题。🔎🔎如果说代码有灵魂,那么它的灵魂一定是👉👉。

2023-12-05 00:27:35 434 17

原创 每日一题:LeetCode-209. 长度最小的子数组(滑动窗口)

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!可以看到我们的测试用例过了,但是我们的执行结果却超时了,这说明我们的时间复杂度就太高了,我们应该想一想其他的方法来降低时间复杂度,这就是我接下来要说的————滑动窗口。今天是第一次写滑动窗口的题,果然非常奇妙,居然只有O(N)的时间复杂度,理解滑动窗口的本质才有助于你解决类似问题不会毫无思路。我们可以看到,如果是最坏的情况,

2023-12-03 22:00:51 382 10

原创 每日一题:NowCower-JZ64.求1+2+3+...+n

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!💪💪当然切记不可😈走火入魔😈,每日打怪,拾取经验,终能成圣🙏🙏!开启我们今天的斩妖之旅吧!虽然这题限制了我们一些语法以及常用的运算符,但是我们依旧可以通过C/C++的语法来解决,其中构造函数和右移运算就是很好的解题方案。🔎🔎如果说代码有灵魂,那么它的灵魂一定是👉👉。对C++语法理解到位,这题就不难了。项数 / 2 == n。

2023-12-02 10:18:13 337 8

原创 每日一题:LeetCode-1089. 复写零

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!开启我们今天的斩妖之旅吧!虽然这题是让我们在原数组操作,但是我们不妨先开辟一个数组,cur指针指向原数组,dest指针指向新数组,只要cur不为0,dest就复制cur的值,如果cur为0,dest就移动两步,且每一步都写为0。这个时候,我们的cur的位置就是最后需要复写的位置,而dest正是我们需要复写的最后一个元素。

2023-12-01 11:39:53 561 13

原创 【C语言期末不挂科——指针进阶篇】【上】

  我们可以用字符指针来接收字符串,有人可能要问了:“指针接收?那是把字符串存储到指针里吗?”,实则不然,想一下,如果是在x86的环境下,指针只有4个字节大小,而这个字符串已经超出4字节的范围。

2023-11-30 16:52:12 1131 84

原创 每日一题:LeetCode-283. 移动零

首先题目给我们一个数组,让我们最终得到的结果被划分成两个区间,一个是元素为0的区间,一个是元素不为0的区间。我把这类题目称为划分数组的题目,而解决这类将数组划分为几个区域的问题,我们经常会使用双指针算法。双指针问题在数组划分类似的问题中非常常见,双指针并不一定是C语言语法中的指针,可以是数组下标,或者某个索引等…

2023-11-29 23:31:21 249 6

原创 每日一题:LeetCode-202.面试题 08.06. 汉诺塔问题

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!汉诺塔问题很经典,虽然不像二叉树那样直观的感受就是递归,这里就不得不说递归的本质了,其实就是将大问题拆分成小问题,在将小问题拆分成结构相同的小问题。汉诺塔问题是很多小伙伴第一次接触到的递归的题目,非常的经典,当然现在来看其实原理也很简单,我们只需要将大问题拆成子问题就可以了,这道题目的拆解还是比较简单的。

2023-11-28 23:37:50 276 3

原创 每日一题:LeetCode-202.快乐数(一点都不快乐)

虽然力扣把这题给标为了简单,但是如果你想不明白给的第二个条件,这题和困难也相差无二,第一个条件是给你一个正整数,每个位置的平方和就是下一个位置,第二个条件其实说明了在这里只有两种情况,一种是最后变成1一直循环,另外一种情况是存在一个环使得这个数永远不能为1。是1就快乐数,不是1就不是快乐数。👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!循环会不会是无限不相等的循环?

2023-11-27 22:25:59 1204 64

原创 每日一题:LeetCode-LCR 143.子结构判断

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!开启我们今天的斩妖之旅吧!A树B树必须都不为空树,而且B树一定要是A树的一部分结构或者就是A树,这才能满足B是A的子结构。1、B树为空或者AB都为空的情况,但是题目明确要求了,AB有一个为空,都不为另一棵树的子结构,所以第一点情况是false。3、B树是A树的一部分,并非子树,题目示例也说明了这种B树是A树的子结构。

2023-11-26 18:48:38 438 30

原创 每日一题:LeetCode-103/107.二叉树的(层序/锯齿形层序)遍历

💪💪当然切记不可😈走火入魔😈,每日打怪,日日累积,终能成圣🙏🙏!本题和昨天写的题很像,只不过这次的层序遍历是要从叶子结点所在层向上进行层序遍历,既然我们使用二维数组来进行层序遍历,我们不妨先将正常的层序遍历保存到二维数组中,在正常的层序遍历完成之后,将二维数组的元素(一维数组,存的是每一层节点的值)首尾交换。这两题的相似度很高,我这里都是使用深搜的方式得到正常层序遍历的结果,当然你可以使用队列的形式得到层序遍历结果,这里就不展示了,这两题的不用是对层序遍历的结果的处理,转换成另外的形式。

2023-11-25 16:00:58 423 28

原创 每日一题:LeetCode-102.二叉树的层序遍历

说到二叉树的层序遍历,我们第一反应肯定是用广度优先搜索,广搜需要队列存储每一层的节点,当一层节点处理完之后再将本层已处理的节点全部pop掉,接着处理下一层节点,直到处理完毕,深搜便完成了,这里题目要求用二维数组来接收深搜的结果,所以我们可以开个二维数组,在每层节点pop之前,把每层节点记录在一位数组中,最终把一维数组放到二维数组中。使用深搜也就是dfs,那么如何深搜才是关键,其实我们只需要知道每个节点的层数就可以进行深搜了,我们可以直接用节点的层数把深搜的每个节点压入到对应层的数组中。

2023-11-24 17:11:13 1077 45

原创 每日一题:LeetCode-105.从前序遍历与中序遍历构造二叉树

👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。这是一道力扣的中等题,总的来说也并不算很难,理解掌握对前序遍历与中序遍历递归构建的过程才是最重要的。🔎🔎如果说代码有灵魂,那么它的灵魂一定是👉👉。

2023-11-23 17:00:00 365 23

空空如也

空空如也

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

TA关注的人

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