- 博客(48)
- 收藏
- 关注
原创 计算机网络笔记(湖科大教书匠版本)
1.计算机网络最简单的定义:一些互相连接的、自治的计算机的集合互联:指计算机之间可以通过有线或无线的方式进行数据通信自治:指独立的计算机,它有自己的硬件和软件,可以单独运行使用集合:指至少需要两台计算机2.分类按照交换技术分类:电路交换网络、报文交换网络、分组交换网络按照使用者分类:公用网、专用网(某些特殊单位会有,不给单位外的人使用)按照传输介质分类:有线网络、无线网络(目前,无线局域网使用的WiFi技术,应用普遍)按照网络的覆盖范围。
2024-03-11 19:16:09
2421
2
原创 王道考研操作系统笔记
1.并发:宏观上是同时发生的,微观上是交替发生的。操作系统的并发性:计算机系统“同时”运行着多个程序,宏观上看是同时运行着的,微观上看是交替运行的。考点:单核CPU同一时刻只能执行一个程序,各个程序只能并发的执行;而多核CPU中,多个程序可以并行的执行。2.并行:同一时刻同时发生3.共享:指系统中的资源供内存中多个并发执行的进程共同使用。4. 虚拟:将一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上的对应物是用户感受到的。
2024-03-11 19:15:51
2460
原创 LeetCode|动态规划|72. 编辑距离、647. 回文子串、516. 最长回文子序列
如果s[i] == s[j] ,此时dp[i][j] = dp[i+1][j-1] + 2;6个回文子串: "a", "a", "a", "aa", "aa", "aaa"inention -> enention (将 'i' 替换为 'e')enention -> exention (将 'n' 替换为 'x')exention -> exection (将 'n' 替换为 'c')horse -> rorse (将 'h' 替换为 'r')三个回文子串: "a", "b", "c"
2023-11-07 11:29:50
225
原创 LeetCode|动态规划|392. 判断子序列、115. 不同的子序列、 583. 两个字符串的删除操作
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。判断这两个字符串数组,最长公共子序列长度是否==s.szie()出现的个数,结果需要对 109 + 7 取模。如下所示, 有 3 种可以从 s 中得到。如下所示, 有 5 种可以从 s 中得到。这也是看到这个题目一开始想到的方法。
2023-11-06 15:12:27
197
原创 LeetCode|动态规划|1035. 不相交的线 、53. 最大子数组和
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。连续子数组 [4,-1,2,1] 的和最大,为 6。以这种方法绘制线条,并返回可以绘制的最大连线数。在两条独立的水平线上按给定的顺序写下。可以画出两条不交叉的线,如上图所示。是数组中的一个连续部分。
2023-10-31 10:00:59
222
原创 LeetCode|最长子序列问题|300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组、1143. 最长公共子序列
假设之前的元素为j,如果nums[i] > nums[j]的话,说明dp[i] = dp[j] + 1。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。最长连续递增序列是 [1,3,5], 长度为3。长度最长的公共子数组是 [3,2,1]。最长连续递增序列是 [2], 长度为1。,找到其中最长严格递增子序列的长度。
2023-10-30 17:56:19
157
原创 LeetCode|股票问题|714. 买卖股票的最佳时机含手续费、309. 买卖股票的最佳时机含冷冻期
你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8。对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。,所以本题每天的状态有四种(见代码注释)在此处买入 prices[4] = 4。代表了交易股票的手续费用。
2023-10-28 10:56:48
92
原创 LeetCode|股票问题|121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II、123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV
随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。
2023-10-26 16:43:29
311
原创 LeetCode|动态规划|139. 单词拆分、198. 打家劫舍、213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋。偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。,今晚能够偷窃到的最高金额。
2023-10-25 15:29:08
133
原创 LeetCode|动态规划| 70. 爬楼梯、322. 零钱兑换、279. 完全平方数
目录一、70. 爬楼梯1.题目描述2.解题思路3.代码实现二、322. 零钱兑换1.题目描述2.解题思路3.代码实现三、279. 完全平方数1.题目描述2.解题思路3.代码实现一、70. 爬楼梯1.题目描述假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2
2023-10-23 15:08:19
116
原创 LeetCode|动态规划|518. 零钱兑换 II 、377. 组合总和 Ⅳ
题目数据保证答案符合 32 位整数范围。请注意,顺序不同的序列被视作不同的组合。
2023-10-21 19:07:05
82
原创 LeetCode|动态规划|1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。如果x == y,那么两块石头都会被完全粉碎;如果x!= y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回0。示例 1:1组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
2023-10-21 14:39:27
75
原创 LeetCode|动态规划|343. 整数拆分 、416. 分割等和子集
请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。数组可以分割成 [1, 5, 5] 和 [11]。数组不能分割成两个元素和相等的子集。),并使这些整数的乘积最大化。你可以获得的最大乘积。
2023-10-19 18:10:32
82
原创 LeetCode|动态规划|63. 不同路径 II
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。23x3 网格的正中间有一个障碍物。从左上角到右下角一共有2条不同的路径:1. 向右 -> 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右 -> 向右1。
2023-10-17 21:03:59
479
原创 LeetCode|贪心算法|860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始你手头没有任何零钱。给你一个整数数组bills,其中bills[i]是第i位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回false。true前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
2023-10-16 15:19:46
92
原创 动态规划|70. 爬楼梯 、746. 使用最小花费爬楼梯、62. 不同路径
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。- 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。- 支付 1 ,向上爬一个台阶,到达楼梯顶部。你将从下标为 1 的台阶开始。
2023-10-16 15:18:25
73
原创 LeetCode|贪心算法|1005. K 次取反后最大化的数组和 、134. 加油站 、 135.分发糖果
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。
2023-10-11 19:58:32
151
原创 LeetCode|贪心算法| 455. 分发饼干 、53. 最大子数组和 、122. 买卖股票的最佳时机 II 、55. 跳跃游戏、45. 跳跃游戏 II
目录一、455. 分发饼干1.题目描述2.解题思路3.代码实现二、53. 最大子数组和1.题目描述2.解题思路3.代码实现三、122. 买卖股票的最佳时机 II1.题目描述2.解题思路3.代码实现四、55. 跳跃游戏1.题目描述2.解题思路3.代码实现五、45. 跳跃游戏 II1.题目描述2.解题思路3.代码实现 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 ,都有一个胃口值 ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 ,都有一个尺寸 。如果
2023-10-10 20:38:45
136
原创 LeetCode|回溯算法|216. 组合总和 III 、17. 电话号码的字母组合
2.主要还是剪枝操作(不剪枝的话LeetCode判定超出时间限制),在77那题的基础上,多剪一个枝(如果当前path中元素和 已经大于题目要求的和,直接return)在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。(这题代码我放在本篇文章第三题)那题很接近,只不过这里的终止条件要加一个对path中元素和的判断。给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。的字符串,返回所有它能表示的字母组合。
2023-10-04 20:53:25
56
原创 LeetCode|回溯算法|77. 组合
1.全局变量:二维数组result存放所有符合条件的结果、一维数组path存放符合条件的结果。:如果path中的元素个数 = 题目所要求的k,就将当前符合题目的 path存放到结果集中。:for循环从startIndex开始遍历,然后递归,然后回溯。startIndex用来记录遍历的起始位置。
2023-10-04 19:31:33
141
原创 LeetCode|二叉树|513.找树左下角的值 、112.路径总和、113.路径总和 II
和112.路径总和差不多,只不过这里要记录所有符合题目的路径,以及将路径的节点值保存下来。ps:明确最底层的最左边的节点不一定是左孩子,也可能是右孩子!不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。等于目标和的根节点到叶节点路径如上图所示。路径总和等于给定目标和的路径。(1 --> 2): 和为 3。(1 --> 3): 和为 4。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。
2023-09-26 20:32:42
206
原创 LeetCode|二叉树| 110. 平衡二叉树 、257. 二叉树的所有路径、257. 二叉树的所有路径、404. 左叶子之和
二叉树的相关题目。
2023-09-25 20:55:01
167
原创 江苏大学805程序设计2019年
有52张扑克牌,使它们全部正面朝上。从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转;依此类推,直到第1张要翻的牌是第52张牌翻完为止。统计最后有几张牌正面朝上,并打印出来。
2023-09-25 18:59:55
578
原创 LeetCode|二叉树|116.填充每个节点的下一个右侧节点指针 、117. 填充每个节点的下一个右侧节点指针 II 、 104.二叉树的最大深度 、111. 二叉树的最小深度
有关二叉树的题目(递归法和迭代法)
2023-09-22 17:03:04
237
1
原创 LeetCode|二叉树|102.二叉树的层序遍历、107. 二叉树的层序遍历 II、199.二叉树的右视图、637. 二叉树的层平均值、429. N 叉树的层序遍历、515. 在每个树行中找最大值
有关层序遍历的一些题目
2023-09-22 07:57:14
263
1
原创 LeetCode|二叉树|144.前序遍历 、 145.后序遍历 、94.中序遍历 、11.盛最多水的容器
双指针法,left指向数组开头,right指向数组末尾。然后让双指针不断靠近,这意味着。容器的底是在不断缩小的,只有想办法让高变得更大才可以获取更大的容量。轴共同构成的容器可以容纳最多的水。前序遍历:“中”、“左”、“右”后序遍历:“左”、“右”、“中”中序遍历:“左”、“中”、“右”深度优先搜索,设计递归函数。深度优先搜索,设计递归函数。深度优先搜索,设计递归函数。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。给你一棵二叉树的根节点。给定一个二叉树的根节点。
2023-09-20 21:21:17
311
1
原创 LeetCode|239. 滑动窗口最大值 、 347.前 K 个高频元素
优先级队列对外接口只有1.从队头取元素2.从队尾添加元素,没有其他方式,所以看起来像一个队列。缺省情况下,是利用大顶堆对元素进行排序,这个大顶堆是以vector为表现形式的complete binary tree(完全二叉树)。
2023-09-19 17:21:24
119
原创 LeetCode|栈与队列|20. 有效的括号 、 1047. 删除字符串中的所有相邻重复项 、 150. 逆波兰表达式求值
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。如何转化成字符串:将栈中元素一个一个pop到result字符串结果集中,直到栈空。此时字符串是逆序的,再reverse一下即可。这里可以拿一个字符串来当栈使用,最后就省略了栈转化成字符串的操作。在完成所有重复项删除操作后返回最终的字符串。返回一个表示表达式值的整数。
2023-09-18 20:24:47
206
原创 LeetCodoe|栈与队列|232.用栈实现队列 、225. 用队列实现栈
定义两个队列,que1和que2,que2用作辅助队列,用来保存que1除最后一个元素以外的元素,等que1将最后一个元素弹出之后,再将数据导回。peek函数:和pop函数类似,因为在同一个类中,直接复用即可。这里要注意,因为pop函数直接弹出了,所以还要将弹出的结果再存放进去。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(用两个栈来实现队列的相关功能。定义一个输入栈和一个输出栈。empty函数:如果输入栈和输出栈都为空,则为空。将输入栈中的所有元素都导入到输出栈中。
2023-09-17 14:13:58
194
1
原创 KMP算法|LeetCode|28.找出字符串中第一个匹配项的下标 、
PS:本文仅用来给自己记录一些kmp算法要点。有关kmp算法的详细信息可以参考。
2023-09-15 16:35:05
43
原创 LeetCode|字符串|344.反转字符串 、 541. 反转字符串II 、剑指Offer 05.替换空格 、 151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串
有关LeetCode上面字符串相关题目的解析
2023-09-14 19:40:05
287
1
原创 LeetCode|哈希表| 454.四数相加II 、383. 赎金信 、15. 三数之和 、18. 四数之和
三数之和和四数之和的问题,题目要求进行去重,再用哈希表来求解便很难,这里两道题用双指针法,进行剪枝去重操作。四数之和就是在三数之和的基础上,多套了一个for循环。
2023-09-13 20:32:41
287
1
原创 LeetCode|哈希表|1.两数之和
将数组中的元素存放在map中,然后遍历数组元素,在map中寻找是否有(target - nums[i])这一元素(其中,nums[i] 是遍历的当前元素的值),如果有,则返回当前元素的下标和map中寻找到的那个元素的下标值。map是一种key value的存储结构,因此这里的key存放的是元素的值,value存放的是元素的下标。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。,请你在该数组中找出。
2023-09-11 23:14:54
51
原创 LeetCode|哈希表|242. 有效的字母异位词 、349. 两个数组的交集 、202. 快乐数
下标0的位置记录字符‘a’出现的次数,下标1的位置记录字符‘b’出现的次数,其他字符同理。题目要求输出的结果每个元素是唯一的,也就是要我们做去重操作,所以选对正确的哈希表结构是非常关键的。本题使用unordered_set哈希结构来求解,unordered_set可以自动帮忙做去重的操作(往里面添加100个元素1,最后也只有一个1)。在这里不需要额外定义一个数组,只需在原数组record的基础上,对t中出现的字符在对应下标上做“--”操作即可。,说明进入了无限循环,否则一直计算直到sum == 1。
2023-09-11 23:02:03
246
原创 LeetCode|链表|面试题 02.07. 链表相交 142. 环形链表 II
如果两个相交,那么他们相交的那个节点的后面长度一定是相同的。所以对于一个链表A(长度为8),一个链表B(长度为4),。
2023-09-10 23:57:27
139
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人