自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试八股-3-线程进程协程

而对线程而言,除了 CPU 外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源;1. 线程是操作系统的资源,线程的创建、切换、停止等都非常消耗资源,而创建协程不需要调用操作系统的功能,编程语言自身就能完成,所以协程也被称为用户态线程,协程比线程轻量很多;2. 进程和线程切换时,需要切换进程和线程的上下文,进程的上下文切换时间开销远远大于线程上下文切换时间,耗费资源较大,效率要差一些;对条件的测试是在互斥锁的保护下进行的,条件变量始终与互斥锁一起使用。

2023-08-08 14:50:00 121

原创 面试八股-2-进程有多少种状态,如何转换

阻塞状态:在运行状态期间,如果进行了阻塞的操作,此时进程暂时无法操作就进入到了阻塞状态,在这些操作完成后就进入就绪状态。- 创建:一个进程启动,首先进入创建状态,需要获取系统资源创建进程管理块(PCB:Process Control Block)完成资源分配。- 运行状态:获取处理器资源,被系统调度,当具有时间片开始进入运行状态。- 就绪状态:在创建状态完成之后,进程已经准备好,处于就绪状态,但是还未获得处理器资源,无法运行。- 终止状态:进程结束或者被系统终止,进入终止状态。2. 进程状态转换图。

2023-08-03 17:38:41 124

原创 面试八股-1-进程通信方式有哪些

对信号量的操作分为 P 操作和 V 操作,P 操作是将信号量的值减 1,V 操作是将信号量的值加 1。信号是 Linux 进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级,对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以从消息队列中读走消息,消息队列是随内核持续的。

2023-08-03 17:35:31 137

原创 Leetcode-重塑矩阵C++实现

思路:先判断能否成功转换,不能直接返回原矩阵,如果能的话逐行遍历矩阵存储在vectortemp中,然后当temp.size为c时temp存储到res中,并清空temp重新开始。在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。否则,输出原始矩阵。

2023-08-03 17:09:59 111

原创 Leetcode-数组拆分C++实现

给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。思路:说的乱七八糟,其实就是排序,然后隔位相加就完了。返回该 最大总和。

2023-08-03 14:55:27 197

原创 Leetcode-N叉树的最大深度C++实现

递归,先判断当前节点为空和无子树的情况,然后逐个判断子树深度并记录最大值,最后返回的时候要加上当前节点的深度1。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。给定一个 N 叉树,找到其最大深度。

2023-07-29 20:53:36 64

原创 Leetcode-反转字符串中的单词IIIC++实现

你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。笨死了笨死了,状态不好,感觉是写的最烂的一道题。空格切分,每个单词单独反转,去掉开头的空格。s 包含可打印的 ASCII 字符。s 中的所有单词都用一个空格隔开。s 不包含任何开头或结尾空格。s 里 至少 有一个词。

2023-07-29 20:07:14 58

原创 Leetcode-学生出勤记录IC++实现

给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。如果学生可以获得出勤奖励,返回 true;否则,返回 false。两个标志分别记录A和L的次数,L若不是连续则重新开始计数。按 总出勤 计,学生缺勤('A')严格 少于两天。'P':Present,到场。'A':Absent,缺勤。'L':Late,迟到。

2023-07-29 19:46:27 48

原创 Leetcode-反转字符串ⅡC++实现

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。最笨的方法,按三种情况去判断,然后根据每种情况去实现。如果剩余字符少于 k 个,则将剩余字符全部反转。

2023-07-24 15:24:29 34

原创 Leetcode-二叉搜索树的最小绝对差C++实现

二叉搜索树中序遍历得到有序序列(代码写错了,应该Inorder不是preorder),然后插值最小的两个节点在序列中一定相邻,所以计算相邻节点的最小差值即可。差值是一个正数,其数值等于两值之差的绝对值。给你一个二叉搜索树的根节点。

2023-07-24 14:35:06 41

原创 Leetcode-最长特殊序列ⅠC++实现

例如,"abc" 是 "aebdc" 的子序列,因为删除 "aebdc" 中斜体加粗的字符可以得到 "abc"。"aebdc" 的子序列还包括 "aebdc" 、 "aeb" 和 "" (空字符串)。给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1。「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列)。字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。评论区说了这题应该是搞笑难度。

2023-07-24 14:10:05 36

原创 Leetcode-检测大写字母C++实现

只需遍历一边,如果全大写或者全小写则为true,如果仅存在一个大写字母且为字首的话也为true,其他情况一律false。给你一个字符串 word。如果大写用法正确,返回 true;否则,返回 false。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。单词中所有字母都不是大写,比如 "leetcode"。全部字母都是大写,比如 "USA"。

2023-07-24 14:00:41 158

原创 Leetcode-斐波那契额数列C++实现

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。F(n) = F(n - 1) + F(n - 2),其中 n > 1。给定 n ,请计算 F(n)。

2023-07-24 13:46:52 46

原创 Leetcode-相对名次C++实现

运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同。使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 "x")。名次第 2 的运动员获银牌 "Silver Medal"。

2023-07-24 13:44:05 29

原创 Leetcode-下一个更大元素C++实现

对于每个 0

2023-07-21 17:02:45 36

原创 Leetcode-构造矩形C++实现

作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。返回一个 数组 [L, W],其中 L 和 W 是你按照顺序设计的网页的长度和宽度。宽度 W 不应大于长度 L ,换言之,要求 L >= W。长度 L 和宽度 W 之间的差距应当尽可能小。你设计的矩形页面必须等于给定的目标面积。

2023-07-21 16:31:16 43

原创 Leetcode-最大连续1的个数C++实现

记录连续1的数量,放入容器里,然后找出容器里最大的数返回。, 计算其中最大连续。

2023-07-21 16:19:54 111

原创 Leetcode-密钥格式化C++实现

我们想要重新格式化字符串 s,使每一组包含 k 个字符,除了第一组,它可以比 k 短,但仍然必须包含至少一个字符。此外,两组之间必须插入破折号,并且应该将所有小写字母转换为大写字母。给定一个许可密钥字符串 s,仅由字母、数字字符和破折号组成。字符串由 n 个破折号分成 n + 1 组。你也会得到一个整数 k。有点笨,可能消耗比较大,先删除,再反转,再插入,再反转。返回 重新格式化的许可密钥。

2023-07-21 15:47:14 52

原创 Leetcode-岛屿的周长C++实现

岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100。网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] = 1 表示陆地, grid[i][j] = 0 表示水域。直接遍历,然后遇到相邻的直接-2,因为两个各自都少了一条边所以-2.

2023-07-21 11:30:34 55

原创 Leetcode-重复的子字符串C++实现

检查是否可以通过由它的一个子串重复多次构成。给定一个非空的字符串。

2023-07-21 11:10:38 89

原创 Leetcode-分发饼干C++实现

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

2023-07-21 10:38:28 36

原创 Leetcode-找到所有数组中小时的数字C++实现

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。新建一个与nums大小一致的vector,将出现的数字对应位置置为-1,然后遍历copy,如果存在不为-1的位置则说明缺失该位置所对应的数字。

2023-07-20 18:27:02 26

原创 Leetcode-排列硬币

你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。

2023-07-20 18:02:27 30

原创 Leetcode-字符串中的单词数C++实现

因为题目中符号后也会有空格,所以可以根据空格来切分,只要碰到一个空格,且空格后为字符就可以+1,要注意判断第一个位置是空格还是字符,如果是字符就从1开始,是空格就从0开始。统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。

2023-07-20 17:42:48 103

原创 Leetcode-第三大的数C++实现

先从大到小排序,然后遍历,每发现一个不同的数flag+1,当flag=3的时候是第三大的数,如果循环完了flag还小于3说明不存在第三大的数,返回最大的数。如果不存在,则返回数组中最大的数。给你一个非空数组,返回此数组中。

2023-07-20 10:22:27 98

原创 Leetcode-FizzBuzzC++实现

answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answer[i] == i (以字符串形式)如果上述条件全不满足。answer[i] == "Fizz" 如果 i 是 3 的倍数。answer[i] == "Buzz" 如果 i 是 5 的倍数。

2023-07-20 10:01:58 67

原创 Leetcode-判断子序列C++实现

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

2023-07-19 17:41:52 31

原创 Leetcode-最长回文串C++实现

map记录次数,然后判断次数的奇偶性,偶数直接加,奇数第一次遇到时直接加,再遇到+(次数-1)。给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串。在构造过程中,请注意 区分大小写。比如 "Aa" 不能当做一个回文字符串。

2023-07-19 17:41:30 30

原创 Leetcode-左叶子之和

看了评论区好多方法,感觉前序遍历才是符合正常逻辑思维的,而且效率极高。,返回所有左叶子之和。

2023-07-18 17:51:48 20

原创 Leetcode-判断子序列C++实现

两个指针分别指向s和t的初始,逐个进行比对,当发现比对不上且j未越界时对t的指针j进行++,找到下一个能够和s[i]匹配上的t[j],此时如果j++未越界或者i,j都到了最后一位的话进行++操作。当匹配结束且没有中断返回false说明匹配成功,return true;字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

2023-07-18 17:09:48 37

原创 Leetcode-找不同C++实现

随机重排,然后在随机位置添加一个字母。,它们只包含小写字母。

2023-07-18 16:37:02 41

原创 Leetcode-反转字符串中的元音字母

元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。从前往后从后往前分两路先找元音再交换。

2023-07-18 16:17:04 38

原创 Leetcode-字符串中的第一个唯一字符C++实现

比对就完了,发现map再字符串这类题里是真的好用。它的第一个不重复的字符,并返回它的索引。

2023-07-18 16:15:50 61

原创 Leetcode-赎金信C++实现

思路:map存储magazine中的字符和出现次数,然后用ransomNote去比对,比对失败直接false,比对成功次数-1,并判断次数是否小于0,若小于0则返回false。当比对结束且所有value都不小于0返回true。给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。magazine 中的每个字符只能在 ransomNote 中使用一次。如果可以,返回 true;否则返回 false。

2023-07-18 16:08:42 32

原创 Leetcode-猜数字大小C++实现

每轮游戏,我都会从 1 到 n 随机选择一个数字。请你猜选出的是哪个数字。0:我选出的数字和你猜的数字一样。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。-1:我选出的数字比你猜的数字小 pick < num。1:我选出的数字比你猜的数字大 pick > num。砂闭力扣,题目反了,我说咋做了半天就是超时。

2023-07-18 15:47:33 69

原创 Leetcode-有效的完全平方数

给你一个正整数 num。如果 num 是一个完全平方数,则返回 true ,否则返回 false。完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。二分查找,注意num过大时如果mid使用int则会越界,所以mid也要用long。不能使用任何内置的库函数,如 sqrt。

2023-07-18 15:24:40 29

原创 Leetcode-两个数组的交集II C++实现

给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。一直想套用之前的就少做点,结果更麻烦了,用了两个map,一个存储第nums1的元素和次数,一个用来比对,然后再两个map比较下次数的大小再循环输出就行了,其实可以用一个map实现,用不去递增,而去递减。

2023-07-18 15:04:46 41

原创 Leetcode-两个数组的交集C++实现

用第一个数组创建一个map,初始value值为0;第二个数组遍历map,遇到map中有的元素时将value值+1;最后将map中value非0的压入到res中。输出结果中的每个元素一定是。

2023-07-18 10:48:37 57

原创 Leetcode-反转字符串

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

2023-07-17 16:58:46 28

原创 Leetcode-比特位计数C++实现

这想到了,就是一分钟的事情。,计算其二进制表示中 1。来自Leetcode评论区。

2023-07-17 16:32:50 73

Fourier Series Expansion Based Filter

旋转等变卷积论文

2023-06-05

空空如也

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

TA关注的人

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