自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程的创建

由于不可以调用系统,所以要使用第三方库(第三方库要使用-l) -lpthrerad。3. 一个问题:给线程传递的参数和返回值,可以是任意类型(包括对象)。cpu调度的时候看的是lwp,因为Linux中只有轻量级进程。1. main函数结束,代表主线程结束,一般也代表进程结束。2. 新线程对应的入口函数,运行结束,代表当前线程运行结束。第二个参数:设置线程属性,nullptr表示默认。第一个参数:指向线程标识符的指针。第四个参数:传递给线程函数的参数。:分离线程,系统自动回收资源。第三个参数:线程函数地址。

2025-04-02 18:12:17 358

原创 系统调用与中断

中断(Interrupt)和系统调用(Syscall)是操作系统中两个关键机制,分别用于处理硬件事件和用户程序与内核的交互。它们虽然都涉及从用户模式到内核模式的切换,但设计目的和触发方式不同。处理来自硬件或软件的异步事件,强制CPU暂停当前任务,转而去执行特定的处理程序(如键盘输入、定时器到期、磁盘I/O完成等)。为用户程序提供访问内核功能的接口(如文件操作、进程创建、网络通信),是。从用户模式切换到内核模式的唯一安全途径。

2025-04-01 23:57:30 844

原创 搜索二维矩阵

就是我们在虚拟一维数组中二分查找时当前中间位置的值。我们假设将整个二维矩阵按行展开成一个一维数组。可以正确反映矩阵的有序性(如果矩阵是完全有序的)矩阵有 3 行 4 列(m=3, n=4)这种转换方法的前提是矩阵是按行存储的。每个一维索引唯一对应一个二维位置。一维数组索引范围:0 到 11。给你一个满足下述两条属性的。比目标大就左移(排除当前列)比目标小就下移(排除当前行)是虚拟一维数组的中间索引。用于计算行索引(整数除法)用于计算列索引(取模运算)保持了矩阵元素的行优先顺序。不会错过任何可能的位置。

2025-04-01 23:55:34 743

原创 用BFS解决-----拓扑问题

拓扑排序、课程表、课程表II、火星词典

2025-03-31 12:15:00 708

原创 BFS解决----多源最短路径问题

给定一个图,其中包含多个起点和一个终点,多源最短路径问题要求找到从任一起点到终点的最短路径长度。

2025-03-28 12:15:00 1808

原创 系统调用 与 中断

中断(Interrupt)和系统调用(Syscall)是操作系统中两个关键机制,分别用于处理硬件事件和用户程序与内核的交互。处理来自硬件或软件的异步事件,强制CPU暂停当前任务,转而去执行特定的处理程序(如键盘输入、定时器到期、磁盘I/O完成等)。:由外部设备(如网卡、键盘)通过中断控制器(如APIC)发送信号给CPU。键盘按下 → 触发中断 → CPU执行键盘驱动的中断服务程序(ISR)。为用户程序提供访问内核功能的接口(如文件操作、进程创建、网络通信),是。从用户模式切换到内核模式的唯一安全途径。

2025-03-27 21:29:28 592

原创 BFS解决最短路径问题(使用BFS解决最短路径问题的黄金法则)

BFS适用最短路径问题的条件、BFS vs 其他最短路径算法对比、BFS的核心优势

2025-03-27 21:20:31 712

原创 如何进行文件操作

在 C 语言中,文件操作是通过标准库函数(如fopenfclosefprintf等)来完成的。fopen函数用于打开文件,它的第二个参数是一个字符串,指定了文件的打开模式。常见的模式包括"w""a""r"等,每种模式有不同的用途和行为。

2025-03-24 23:30:37 896

原创 BFS解决FloodFill算法

• 并且将这个陆地相连的所有陆地,也就是这块「岛屿」,全部「变成海洋」。这样的话,我们下次 遍历到这块岛屿的时候,它「已经是海洋」了,不会影响最终结果。可以先利⽤ bfs 将与边缘相连的 '0' 区域做上标记,然后重新遍历矩阵,将没有标记过的 '0' 修改成 'X' 即可。遍历当前点的四个方向,如果相邻点在图像范围内且颜色与起始点相同,将其加入队列。在上图中,底部的区域没有被捕获,因为它在 board 的边缘并且不能被围绕。遍历网格的每个单元格,对于值为 '1' 的单元格,如果未访问过,则调用。

2025-03-24 23:25:18 748

原创 TopK问题

1.创建一个大小为k的堆(大根堆 or 小根堆)求最小 大根堆 ,求最大 小根堆2.循环:(1)依次进堆(2)判断堆的大小是否超过K3.思考:用大根堆还是小根堆??为什么选择大根堆或者小根堆??方法时间复杂度适用场景排序法数据集较小堆数据集较大,K 远小于 N快速选择O(N)O(N)(平均)数据集较大,对时间要求高。

2025-03-22 16:05:10 628

原创 二叉树最大宽度

被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。最大宽度出现在树的第 4 层,宽度为 7 (6,null,null,null,null,null,7)。遍历当前层的所有节点,对于每个节点,如果其左子节点或右子节点存在,将其加入。最大宽度出现在树的第 3 层,宽度为 4 (5,3,null,9)。最大宽度出现在树的第 2 层,宽度为 2 (3,2)。整体思路:用数组存储二叉树的方式,给节点编号。:计算当前层的最大宽度,并更新。:用于存储下一层的节点和层级。给你一棵二叉树的根节点。

2025-03-20 23:26:01 407

原创 BFS--------N叉树的层序遍历

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。1.这道题就是对N叉树进行层序遍历(BFS),只需要逐层对树进行遍历即可。3.使用队列的FIFO性质,创建一个队列queue<Node*> q。被用作实现 BFS 的数据结构,按照从上到下的顺序访问树的所有节点。:如果子节点不为空,将其加入队列,以便后续访问。获取当前队列中的节点数,即当前层的节点数。给定一个 N 叉树,返回其节点值的。:遍历该节点的所有子节点。:遍历当前层的所有节点。:获取队列头部的节点。:从队列中移除该节点。

2025-03-20 19:39:33 439

原创 map和set的区别

适用于存储唯一元素并快速检查元素是否存在。适用于存储键值对并快速通过键查找对应的值。根据具体需求选择合适的容器可以提高代码的效率和可读性。

2025-03-07 16:30:00 602

原创 哈希表算法

法二:分析⼀下题⽬,出现「⾄少两次」的意思就是数组中存在着重复的元素,因此我们可以⽆需统计元素出现的数⽬。• 如果不符合条件,那么前⼀个下标⼀定不可能与后续相同元素的下标匹配(因为下标在逐渐变 ⼤),那么我们可以⼤胆舍去前⼀个存储的下标,转⽽将其换成新的下标,继续匹配。在遍历数组的时候,⼀边检查哈希表中是否 已经出现过当前元素,⼀边将元素加⼊到哈希表中。2.因此,我们可以使⽤「哈希表」,令数组内的元素做key 值,该元素所对应的下标做val 值,将 「数组元素」和「下标」绑定在⼀起,存⼊到「哈希表」中。

2025-03-07 11:00:00 1004

原创 Linux--输入输出重定向、父进程与子进程的继承关系

Linux--输入输出重定向、父进程与子进程的继承关系

2025-02-28 11:38:40 478

原创 前缀和算法

了解前缀和算法以及相关模板例题

2025-02-28 11:33:24 820

原创 二分查找算法

在排序数组中查找元素的第一个和最后一个位置。

2025-02-23 21:45:22 663

原创 vector的使用

提供了丰富的接口,支持动态数组的常见操作,包括构造、赋值、访问、修改、容量管理和迭代等。它是 C++ 中最常用的容器之一,适合需要动态调整大小的数组场景。是 C++ 标准库中最常用的动态数组容器,提供了丰富的接口来操作和管理数组。

2025-02-23 21:44:46 899

原创 Flag数组计数

是一种通过使用辅助数组(通常称为。

2025-02-17 22:13:21 353 2

原创 滑动窗口算法

1.滑动窗口就是用“同向双指针”来实现的,俩个指针同时移动来模拟滑动的一个窗口。:例如,在给定大小的窗口内找到数组的最大值或最小值。:例如,寻找具有固定长度k的所有子数组的最大平均值。:例如,寻找满足某些条件的最小子数组长度。:例如,在字符串中查找某个模式的所有出现,像字母异位词、无重复字符的最长子串等问题。:例如,寻找和为指定值的连续子数组的数量。使用滑动窗口技术可以避免暴力搜索方法中不必要的重复计算,因此可以在许多情况下提高算法效率。

2025-02-17 21:46:21 738

原创 四数之和------双指针算法

四数之和与前面的三数之和题目相似,解题方法也一样,分别用俩个for循环来固定俩个数字,将剩下的数字用双指针的方法进行遍历寻找,需要找到的目标值为 sum = target - nums[i] nums[j]2.在提交运行的时候会发现报错,是应为数据的值超过了int存储的边界,所以我们要使用long long来储存更大的数字。请你找出并返回满足下述全部条件且。注意: 1.本到题还需要进行去重处理。

2025-01-14 10:20:22 410

原创 查找总价格为目标值的两个商品、三数之和--------双指针的方法解决问题

如果此时不符合要求,说明在这个数组里面, 没有别的数符合 nums[left] 的要求了(最⼤的数都满⾜不了你,你已经没救了)。让 right-- ,继续⽐较下⼀ 组数据,而left 指针不变(因为他还是可以去匹配⽐ nums[right] 更⼩的数的)。1.面对这样一道判断三数之和的题,在数组中,我们应该首先想到固定一个值然后使用双指针的方法进行遍历解决,然后再优化代码。2.这道题我们先将数组nums排序,然后固定一个值a,再利用双指针的方法,对固定的值的后面的数字快速找到和为-a。时,这行代码将执行。

2025-01-14 09:30:28 784

原创 盛最多水的容器、有效三角形的个数(medium)----双指针方法解决问题

如果改变右边边界,无论右边边界移动到哪都,新的水面高度都不会超过左边界,(也就是不会超过现在容器的大小),但是由于容器的宽度变小,所以容器的容积一定变小。根据这个条件我们把第三条边可以定为最长的那一条,如果其中俩个边的和能大于最长的这一条边,那么这三条边,都满足任意俩边之和大于第三边。:通过使用两个指针分别指向数组的两端,可以有效地遍历所有可能的容器组合,而不需要进行两两比较。:总是移动较小的那一边的指针,因为只有这样才能有可能找到更高的柱子,从而增加容器的潜在最大面积。轴共同构成的容器可以容纳最多的水。

2024-12-13 13:16:21 806 1

原创 判断链表是否有环-----快慢指针的方法

注意:在写代码的过程中要注意不要越界访问,以及特殊示例,即链表为空,或链表只有一个节点。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。2.根据快慢指针的特性,如果俩个指针相等,那么他们就形成了一个环。1.快慢指针的特性:在一个圆圈中,快指针总会追赶到慢指针。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,判断链表中是否有环。给你一个链表的头节点。

2024-12-09 16:33:55 368 1

原创 快乐树-----快慢指针的方法解决问题

2.由此可以得出最终的结果必定在一个圈内,所以我们使用快慢指针的方法进行操作(快慢指针的特性:在一个圆圈中,快指针总会追上慢指针的,也就是说他们一定会在某一个位置相遇)。如果相遇的位置是1,那么这个数就是快乐数,如果始终没有出现1,那这个数就不是快乐数。1.我们从题目中可以得出这样一个结论,当我们不断地将一个正整数替换成他每个位置上的数字的平方和(示例一),这个过程最终只会有一种结果,那就是死循环。(1)一直在1中死循环,即:1->1->1......->1。(2)在历史的数据中死循环,但始终到不了1。

2024-12-09 16:14:14 504

原创 合并俩个有序链表

4.判断俩个链表的指针有没有走到尽头的,如果有一个指针为空,只需要把另一个链表的剩余节点插入到pre之后pre->next = phead1?3.用俩个指针,判断俩个链表的大小,更小的一个节点插入到虚拟节点的pre后,插入后让pre指针向后移动,更小的那个指针也向后移动。输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序。输入:{-1,2,4},{1,3,4}输入:{1,3,5},{2,4,6}返回值:{-1,1,2,3,4,4}返回值:{1,2,3,4,5,6}

2024-12-06 16:31:11 299 1

原创 合并K个有序链表

数据范围:节点总数 0≤n≤50000≤n≤5000,每个节点的val满足 ∣val∣<=1000∣val∣<=1000。Ps:由于最开始时创建的head节点只是一个占位符,他的值和本身并不在最终的结果中,所以返回的是他的下一个节点。3.遍历数组给数组的每个值a,添加一个新的链表节点,并将其链接到链表的尾部。合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。1.创建一个新的数组,将原来的K个有序链表,全部放入数组中。职位:研发、前端、测试、算法。企业:字节跳动、快手。

2024-12-05 17:04:36 228

原创 C++中string的实现

在c++标准库中,有许多方便的库函数以及他们的接口。在STL中有六大组件,分别是:仿函数、算法、迭代器、空间配置器、容器和配接器。

2024-11-19 19:09:28 255

原创 顺序表及相关OJ题

本文从顺序表的实现以及相关问题进行设计,从而延伸出一些OJ题,以及引出链表的相关知识点

2024-07-18 01:40:05 827

原创 数据结构基础篇---复杂度分析以及笔试、面试的重要环节

在计算机发展的早期,计算机的存储容量很⼩。但是经过计算机⾏业的迅速发展,计算机的存储容量已经达到了很⾼的程度。数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数。时间复杂度主要衡量⼀个算法的运⾏快慢,⽽空间复杂度主要衡量⼀个算法运⾏所需要的额外空间。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结构,计算机组成原理,如CPU的工作原理、时钟周期与指令执行的关系等。数据结构和算法的基本知识,如链表、二叉树、排序算法等。

2024-07-08 21:42:21 319

原创 C语言最常用的八种排序方式

常用的八种排序算法以及如何选择合适的排序算法

2024-01-22 16:17:30 5657 3

原创 软件工程--------就业与编程语言的多样性选择

软件工程专业如何选择编程语言(什么语言赚钱多、容易学、学历要求低?)

2024-01-20 11:45:00 2334 4

空空如也

空空如也

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

TA关注的人

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