自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (2)
  • 收藏
  • 关注

原创 Redis学习笔记2_数据结构

Redis中的Key和Value,在表面上都是一个RedisObject实例,因此,redisObject可以看作一种valueType,对于每一种ValueType类型的redisObject,底层都至少有2种以上的数据结构实现,从而提高redis的运行效率。这样,我们就能通过这个头指针,向前偏移一个字节,取到flag,通过判断flag低三位的值,从而判断头部的类型,已经使用的字节数,总字节数,剩余的字节数。ptr指针,指向实际保存这个值的数据结构,这个数据结构根据type和encoding的属性决定。

2023-01-18 12:00:00 836 1

原创 Redis学习笔记9

快照持久化,redis通过fork一个子进程进行持久化,在子进程中创建一个临时文件写入数据,当数据写完,用临时文件替换上次持久化的文件。但是在redis中的某一时刻,key大批量失效,如果这个时刻有大量的并发请求过来,就会发现缓存过期,就会访问DB,并更新到缓存中,大量请求会使DB崩溃。缺点:对cpu不友好,在过期键较多时,删除过期键会占用一部分CPU事件,对服务器的性能和吞吐量有影响。设置某个Key的过期事件,当需要该key时,检查是否过期,如果过期,就删除,否则就返回该key的值。

2022-11-07 12:00:00 250

原创 Redis学习笔记1_数据类型

对于Redis来说,所有的 key 都是字符串。我们谈论5种value的数据类型。分别是:String,List,Set,Zset,Hash。结构类型结构存储的值结构的读写能力String字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作List列表一个链表,链表上的每个节点都包含一个字符串对链表的两端进行push和pop操作,读取单个或者多个元素;根据值查找或删除元素Set集合包含字符串的无序集合。

2022-10-15 12:00:00 475

原创 代码随想录笔记_动态规划_392判断子序列

因此,只需要最终的dp数组结果即可,不用更新列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。s的第 i-1 个字符和 t 的第 j-1 个字符不相等时,从s[i-1,j-2],t[i-2,j-1]中取目前最长子序列的长度。因为 dp[i][0] 和 dp[0][j] 都是没有意义的,赋值为0即可。给定字符串 s 和 t ,判断 s 是否为 t 的子序列。代码随想录二刷笔记记录。

2022-08-28 20:00:00 139

原创 代码随想录笔记_动态规划_53最大子数组和

找 nums[i] + nums[i-1] 的和sum,是否大于 nums[i] ,如果是,则以 sum 作为新的dp,否则,以 nums[i] 作为新的dp。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。以 nums = [-2,1,-3,4,-1,2,1,-5,4] 为例。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]

2022-08-27 20:00:00 116

原创 代码随想录笔记_动态规划_1035不相交的线

以 A = [1,4,2], B = [1,2,4] 为例,我们可知,在A中 [1,4] 为一个子序列。- 4 的相对顺序。当 A[i-1] 和 B[j-1] 不相等时,从A[i-1,j-2],B[i-2,j-1]中取目前最长子序列的长度。输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]以 A = [1,4,2], B = [1,2,4] 为例。代码随想录二刷笔记记录。

2022-08-26 20:30:00 84

原创 代码随想录笔记_动态规划_1143最长公共子序列

将 text1 中的每个字符,与 text2 相比较,并动态更新 dp数组,只要 text1[i-1] == text2[j-1] ,则 dp 的长度+1,否则,保持不变即可。text1的第 i-1 个字符和 text2 的第 j-1 个字符不相等时,从text1[i-1,j-2],text2[i-2,j-1]中取目前最长子序列的长度。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。解释:最长公共子序列是 “abc”,它的长度为 3。代码随想录二刷笔记记录。

2022-08-25 20:00:00 74

原创 代码随想录笔记_动态规划_718最长重复子数组

把A的元素逐个和B中的元素遍历,如果遇到 A[i] = B[j] ,则继续比较 A[i+1] 和 B[j+1] ,将 dp + 1 ,否则,dp长度保持不变。例如: A[0] = B[2] ,则拿A[1] 和 B[3] 继续比较,A[1]!假设:A[0] = B[0], 则 dp[1][1] 需由 dp[0][0] + 1,因此 dp[0][0] 需要初始化为0。输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]根据递推公式可知,从前往后遍历。代码随想录二刷笔记记录。

2022-08-24 20:00:00 85

原创 代码随想录笔记_动态规划_674最长连续递增序列

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l nums[i-1] 则 dp[i] + 1 ,否则 dp[i] 保持为1。即使数组为 [2,2,2,2,2] ,子序列长度也至少为1。代码随想录二刷笔记记录。

2022-08-23 20:00:00 93

原创 代码随想录笔记_动态规划_714买卖股票的最佳时机含手续费

输入:prices = [1, 3, 2, 8, 4, 9], fee = 2。总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8。输入:prices = [1,3,7,5,10,3], fee = 3。本题的基本思路与LC122的思路相同,仅仅多了一个手续费的区别。本题的基本思路与LC122的思路相同,仅仅多了一个手续费的区别。思路:两种状态,持股(0) 和不持股(1) 之间的相互转移。两种状态,持股(0) 和不持股(1) 之间的相互转移。以 [1,3,2,8,4,9] 为例。

2022-08-22 20:00:00 52

原创 代码随想录笔记_动态规划_300最长递增子序列

以动态规划的思路,我们易想,遍历数组,在遍历到一个新的元素 nums[i] 时,与他之前的元素(假设为 nums[j])相比较,看是否 nums[i] > nums[j],如果大于,则更新 nums[i] 的序列长度,即dp[i]。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。因此我们可知,每次遍历 i 之前的所有元素,比较 nums[i] 和 nums[j] 的大小,找到比 nums[i] 小的数,则更新dp[i] 即可。代码随想录二刷笔记记录。

2022-08-22 20:00:00 66

原创 代码随想录笔记_动态规划_309最佳买卖股票时机含冷冻期

由于最后一天如果保持持股状态,则总利润必然降低,因此最终答案在状态1(不持股)和状态2(冷冻期)中取最大值。冷冻期则由前一天卖出,今天冷冻,今天冷冻结束但是没有操作的状态转移而来。解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]不持股由之前就空仓(本题没有这个状态),当天卖出的状态转移而来。本题存在三种状态,持股(0),不持股(1),冷冻期(2)持股由之前就满仓,冷冻期后才买入两种状态转移而来。输入: prices = [1,2,3,0,2]以 [1,2,3,0,2] 为例。

2022-08-21 20:00:00 53

原创 代码随想录笔记_哈希_219存在重复元素II

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j)

2022-08-20 20:00:00 111

原创 代码随想录笔记_动态规划_188买卖股票的最佳时机IV

示例 2: 输入:k = 2, prices = [3,2,6,5,0,3] 输出:7 解释:在第 2 天 (股票价格 = 2) 的时候买入,在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4。示例 1: 输入:k = 2, prices = [2,4,1] 输出:2 解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。1.确定dp数组及其下标的含义。代码随想录二刷笔记记录。.

2022-08-19 12:00:00 71

原创 代码随想录笔记_动态规划_123买卖股票的最佳时机III

解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。根据递推公式,我们知道,第 i 天的状态依赖于第 i-1 天的状态,因此是从前往后 遍历。...

2022-08-18 20:00:00 82

原创 代码随想录笔记_动态规划_122买卖股票的最佳时机II

解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [7,1,5,3,6,4]代码随想录二刷笔记记录。...

2022-08-17 12:00:00 74

原创 代码随想录笔记_动态规划_121买卖股票的最佳时机

解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。解释:在这种情况下, 没有交易完成, 所以最大利润为 0。由题可知,按时间顺序(股票每天的价格),是从前往后遍历。输入:prices = [7,6,4,3,1]以 [7,1,5,3,6,4] 为例。输入:[7,1,5,3,6,4]买入这只股票,并选择在。代码随想录二刷笔记记录。..

2022-08-16 12:00:00 81

原创 代码随想录笔记_动态规划_337打家劫舍III

因此,转而思考,左右孩子相加的值 > 父节点?如果大于,则我们选择左右孩子相加的值,否则选择父节点。因此可以推导,本题需要根据递归返回的值(即左右孩子相加的值),进行判断。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。本题涉及到树,首先需要考虑遍历方式,需要前中后序遍历,或者层序遍历。输入: root = [3,2,3,null,3,null,1]输入: root = [3,4,5,1,3,null,1]后序遍历,通过递归函数的返回值,决定下一步dp的状态。...

2022-08-15 12:00:00 123

原创 代码随想录笔记_动态规划_213打家劫舍II

进一步分析,本题与 LC198 不同之处在于,本题存在首尾相连的两种情况,因此,我们将两种情况拆分开来,就相当于将LC198封装为一个函数,求出情况1的答案res1,求出情况2的答案res2,二者取最大值返回即可。解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。dp[n-1] : 一共有n 个屋子,dp[n-1]则表示小偷从所有屋子中能偷盗的最大金额。如果有两间屋子,则 dp[1] = Math.max(nums[0],nums[1]);...

2022-08-14 12:00:00 86

原创 代码随想录笔记_动态规划_198打家劫舍

打家劫舍,力扣198,单序列问题,动态规划

2022-08-13 12:00:00 106

原创 代码随想录笔记_动态规划_139单词拆分

力扣139,leetcode,动态规划,回溯,背包问题

2022-08-12 12:00:00 124

原创 代码随想录笔记_动态规划_279完全平方数

动态规划,完全背包,leetcode279,完全平方数

2022-08-11 12:00:00 73

原创 代码随想录笔记_动态规划_70爬楼梯

动态规划,爬楼梯,力扣70题

2022-08-10 12:00:00 98

原创 代码随想录笔记_动态规划_377组合总和IV

动态规划 组合总和IV 力扣377 leetcode

2022-08-09 12:00:00 86

原创 代码随想录笔记_动态规划_322零钱兑换

动态规划 力扣322 零钱兑换

2022-08-08 12:00:00 87

原创 代码随想录笔记_动态规划_518零钱兑换II

力扣518零钱兑换II 动态规划

2022-08-07 12:00:00 89

原创 代码随想录笔记_动态规划_474一和零

动态规划,力扣474

2022-08-06 12:00:00 79

原创 代码随想录笔记_动态规划_494目标和

力扣494

2022-08-05 12:00:00 64

原创 代码随想录笔记_动态规划_1049最后一块石头的重量II

01背包有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x

2022-08-04 12:00:00 83

原创 代码随想录笔记_动态规划_416分割等和子集

请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。反之,如果num中的元素存在负数,则dp中的非0下标元素需要初始化为负无穷。2.背包需要放入的商品重量为元素的数值nums[i],价值也是nums[i]由滚动数组的知识可知,num中的元素都为正整数,则dp初始化为0即可。解释数组可以分割成[1,5,5]和[11]。将数组分割成两个子集,使子集A和子集B的总和相等。dp[j]表示能使得两个子集相等的其中一个子集总和.输入nums=[1,5,11,5]...

2022-08-03 12:00:00 75

原创 代码随想录笔记_哈希_61扑克牌中的顺子

代码随想录二刷笔记记录本题为补充题从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13] .题意分析:题目中给出了几种条件条件1:五张牌必须是升序条件2:不可重复 , 重复也就相当于打破了条件1 -> 去重

2022-08-02 12:00:00 67

原创 代码随想录笔记_哈希_383赎金信

给你两个字符串ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。step2用ransomNote去验证这个字典是否包含了ransomNote中的所有字母。输入ransomNote=“aa”,magazine=“aab”输入ransomNote=“aa”,magazine=“ab”输入ransomNote=“a”,magazine=“b”否则返回false。代码随想录二刷笔记记录。.........

2022-08-01 20:00:00 67

原创 代码随想录笔记_哈希_454四数相加II

之后遍历C数组和D数组,将0-(c+d)作为key,在map中查找,如果存在key,则代表a+b+c+d=0,存在四数相加=0的元组。首先遍历A数组和B数组,map的key和value分别记录A数组和B数组的sum,value记录sum出现的次数。输入nums1=[1,2],nums2=[-2,-1],nums3=[-1,2],nums4=[0,2]2.遍历数组A和B,统计两个数的sum,和sum出现的次数。...

2022-07-31 12:00:00 127

原创 代码随想录笔记_哈希_1两数之和

两数之和,哈希解法

2022-07-30 12:00:00 51

原创 代码随想录笔记_哈希_202 快乐数

由题目说的可能无限循环,但始终变不到1,因此,我们可知sum是会重复出现的,此为解题的关键点,在sum重复出现时,我们就可以断定这个数并非快乐数。否则一定能变到1。如果n是快乐数就返回true;不是,则返回false。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是。编写一个算法来判断一个数n是不是快乐数。,那么这个数就是快乐数。代码随想录二刷笔记记录。...

2022-07-29 12:00:00 112

原创 代码随想录笔记_哈希_349两个数的交集

思路set1保存nums1的元素,set2保存nums2的元素,将set1和set2进行比对,剩下的元素则为共有的元素。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。找到两个数组中,共有的值,题目上指出输出的结果是唯一的,可知,我们需要去重。输入nums1=[4,9,5],nums2=[9,4,9,8,4]输入nums1=[1,2,2,1],nums2=[2,2]解释[4,9]也是可通过的。代码随想录二刷笔记记录。...

2022-07-28 12:00:00 67

原创 代码随想录笔记_哈希_1002查找共用字符

给你一个字符串数组words,请你找出所有在words的每个字符串中都出现的共用字符(包括重复字符),并以数组形式返回。你可以按任意顺序返回答案。输入words=[“bella”,“label”,“roller”]输入words=[“cool”,“lock”,“cook”]输出[“e”,“l”,“l”]输出[“c”,“o”]代码随想录二刷笔记记录。...

2022-07-27 14:00:00 142

原创 代码随想录笔记_哈希_242有效的字母异位词

因为s和t仅包含小写字母,26个字母是固定的,则可以构建一个记录数组record,将s中各个字符出现的次数记录下来(以+的形式),之后再将t中各个字符出现的次数记录下来(以-的形式).注意若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。输入s=“anagram”,t=“nagaram”输入s=“rat”,t=“car”...

2022-07-26 22:05:38 74

原创 代码随想录笔记_链表_707设计链表

本题主要考察对链表的增删改查操作等基本功。需要注意插入和删除的一些特殊情况。

2022-07-24 12:00:00 119

原创 代码随想录笔记_链表_25K个一组翻转链表

链表指针操作泛指之前采用的链接、断链、pre、current、post节点等操作,也可以简单的理解为链表操作,指针能够更好的在图上理解这类操作。链表题目的难点,主要在于链表的操作,即有的时候需要涉及到多个指针(如LC25),需要将指针的操作顺序在图上理顺。给你链表的头节点head,每k个节点一组进行翻转,请你返回修改后的链表。输入head=[1,2,3,4,5],k=2。输入head=[1,2,3,4,5],k=3。输出[2,1,4,3,5]代码随想录二刷笔记记录。......

2022-07-23 15:00:00 199

研一课程复习总结wyk

研一课程复习总结wyk

2021-01-14

单链表的增删改查.c

链表是一种常见的数据结构,资源包含了我对单链表的增删改查实现,本资源是不带头结点的单链表的增删改查,个人能力有限,希望指出不足之处,与大家共勉

2020-06-18

空空如也

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

TA关注的人

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