自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于DP时 从前往后还是从后往前的问题

起点固定,终点不固定,则从后往前,边界条件在最后。起点不固定,重点固定,则从前往后,边界条件在最前。都不固定或者都固定,则开始顺序随意。

2024-05-28 09:55:06 287

原创 中位数贪心

同时,如果 x 取在区间 [a[0],a[n−1]] 之内,无论如何移动 x,它到 a[0]和 a[n−1] 的距离和都是一个定值 a[n−1]−a[0],那么去掉 a[0] 和 a[n−1] 这两个最左最右的数,问题规模缩小。链接:https://leetcode.cn/problems/apply-operations-to-maximize-frequency-score/solutions/2569301/hua-dong-chuang-kou-zhong-wei-shu-tan-xi-nuvr/

2024-05-07 14:46:06 231

原创 289 生命游戏 (技巧类) C++

如果遍历到某个位置时,需要查看它周边的位置,此时如果每一个周围的位置都手写,然后再判断是否越界,就很麻烦。可以先用一个数组保存向周边位置变化的坐标偏移值,一次性通过一个循环,来遍历完周边的位置,并且方便进行越界判断。低位保存现在的状态 高位保存之后的状态。如代码中的nearby。

2024-04-18 21:17:12 258

原创 删除有序数组重复项 C++ (保留任意个重复项)

len表示要填入的索引,在遍历nums的过程中,判断是否符合条件,如果符合条件再填入到nums中覆盖原有元素。条件就是:要填入的位置前面第k个元素,是否跟将要填入的元素相同,如果相同,则跳过现在这个要填入的元素。

2024-04-18 13:13:35 92

原创 与128题类似的2007题 O(n)做法

【代码】与128题类似的2007题 O(n)做法。

2024-04-18 12:54:10 319

原创 is_prime python C++版本

【代码】is_prime python C++版本。

2024-04-15 18:14:37 81

原创 mit MIT 6.S081 Operating System labs随记

lab 1 中 primes.c 写了一个递归,make qemu的时候会报error,error: infinite recursion detected [-Werror=infinite-recursion],导致编译无法通过。选项并将其删除,这样编译器警告将不再被视为错误就能通过了。在Makefile中,找到CFLAGS,找到。

2024-04-14 19:03:09 214

原创 3 1493同类题目 C++ 不定长滑动窗口

删掉一个元素之后全为1的最长子数组,转化为只包含一个0的最长子数组,跟前一题一样,i表示左边界,用zidx表示0最后一次出现的索引,当重复碰到0时,更新zidx和左边界。得到最长长度之后,把包含的那个0去掉,就是答案。用i表示左边界,dic字典中的元素为数字最后一次出现的索引 当遇到重复元素,更新左边界,更新最后一次出现的索引。

2024-04-14 16:09:58 178

原创 中国余数定理简单证明(理解用,不严谨)

要证明:设v的具体形式为则前述左式为:右式为:Q.E.D。

2024-04-13 10:30:41 181

原创 146 LRU缓存

操作模块化(remove, movetoHead);双向链表,链表内保存key - value;

2024-04-07 23:03:39 375

原创 530 783 买一送一 在中序遍历上简单修改 C++

【代码】530 783 买一送一 在中序遍历上简单修改 C++

2024-04-05 20:53:44 335

原创 169 多数元素 C++ O(n) O(1)

poll 代表当选者。m 代表该当选者票数。

2024-04-04 14:44:37 228

原创 265 粉刷房子Ⅱ 易懂版本(python)

这一题做完 256题也会做啦,当然也可以先做256再来思考这题。

2024-04-04 10:27:23 128

原创 983. 最低票价 C++

【代码】983. 最低票价 C++

2024-04-02 17:05:25 423

原创 C++ 初始化列表的 emplace_back() 和 push_back()

已经知道 emplace_back() 和 push_back()的主要区别就是,emplace_back()直接在容器末尾添加元素,而push_back()首先创建元素副本,然后再将副本移动到容器末尾。如果是通过 push_back() 方式添加的,则会调用 一次有参构造 + 一次移动构造 ,如果移动构造不可用则为拷贝构造。它会直接在容器的末尾构造新的元素,而不需要通过临时对象的复制。对象,然后将这个临时对象的副本插入到容器的末尾。,当传递一个包含元素的初始化列表时,它确实会创建一个临时的。

2024-03-29 22:20:31 403

原创 四平方和定理

答案是 2, 则有 n = a^2 + b^2 只要枚举所有的a ( 1 <= a <= \sqrt(n)), 判断 n - a^2 是否是完全平方数就好。四平方和定理:任意一个正整数都可以被表示为至多四个正整数的平方和。时,n可以被表示为至多三个正整数的平方和,因此,当。时,n只能被表示为四个正整数的平方和。如果答案是 1 很好判断,更强的结论:当且仅当。答案是3,排除法就好。

2024-03-29 19:21:20 217

原创 337. 打家劫舍 III 树上打家劫舍 python 记忆化搜索板子

【代码】337. 打家劫舍 III 书上打家劫舍 python 记忆化搜索板子。

2024-03-28 17:06:20 773

原创 95. 不同的二叉搜索树 II C++

【代码】95. 不同的二叉搜索树 II C++

2024-03-28 15:10:07 442

原创 1997. 访问完所有房间的第一天 (C++)

1997. 访问完所有房间的第一天 (C++)

2024-03-28 12:06:05 410

原创 第 K 小/大 题目总结(持续更新...)

此题为找数组任意子序列第k小和模板。此题为找数组连续子序列第k小和模板。

2024-03-26 16:27:45 234

原创 1964. 找出到每个位置为止最长的有效障碍赛跑路线

C++代码 upper_bound。

2024-03-25 14:27:21 313

原创 1143 最长公共子序列

记录vector创建二维数组并赋值的操作。

2024-03-23 16:36:28 129

原创 俄罗斯套娃信封问题

最长递增子序列的进阶版本,值得学习,C++语法,lower_bound 底层由二分实现,类似于python中的bisect.bisect_left,默认情况下返回的都是 索引i,i处的元素及i以后的元素都大于或者等于target。

2024-03-22 13:14:54 233

原创 673. 最长递增子序列的个数

在上述代码中,我希望找到这样一个分界线,在该索引左边 的元素都小于v,而从该索引开始向右的元素都不小于v。在代码的体现是,首先将key 定义的函数作用在数列中的所有元素中,找到最左侧的等于True的元素。索引左边的元素(不包括索引对应的元素)均小于索引对应的元素,索引右边的元素(包括索引对应的元素)均大于等于索引对应的元素。所以bisect_left返回的索引能够根据你给的条件将有序数列进行分割。时间复杂度O(nlogn)解法,python更简便的二分写法,类似。当中 二分暴搜 的写法。

2024-03-18 21:56:16 218

原创 C++ dp迭代写法模板

以 513. 最长回文子序列为例。

2024-03-15 10:33:58 131

原创 C++ 预编译头文件

在整个project的属性中设置precompiled header为use,同时设置use的头文件为**.h即你要预编译的头文件,对整个项目的设置将会应用到所有的cpp文件中,除了刚刚设置为create的cpp文件。但是需要注意的是,如果你的某个cpp文件没有用到这个预编译头文件,那么你不必在该cpp文件中设置precompiled header为use或者 use 这个**.h头文件,可以用别的头文件 或者直接不用。通常这些库是我们不会去改变的。首先把要预编译头文件(**.h)

2024-03-14 16:45:37 396 1

原创 在受污染的二叉树中查找元素 C++

题目很简单 主要是练语法,附上BFS算法。

2024-03-12 08:56:30 408

原创 C++ 强制类型转换符(static_cast、reinterpret_cast、const_cast和dynamic_cast)

将类型名作为强制类型转换运算符的做法是C语言的老式做法,为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成,把基类指针转换成派生类指针,把一种函数指针转换成另一种函数指针,把常量指针转换成非常量指针等。C++ 引入新的强制类型转换机制,主要是为了克服C语言强制类型转换的以下三个缺点。

2024-03-11 19:18:40 676

原创 合并 K 个升序链表 C++

先把每个链表数组的头节点入堆(小顶堆/小根堆),然后出堆,出堆之后,哪个数组的头节点先出堆,就要补充哪个数组的头节点。就这样一直补充下去,知道所有的节点被遍历完。把链表数组均分,直到剩余1个数组,分开之后合并,利用基础的合并两个有序链表的算法,再合并上去。priority_queue的语法需要注意,首先构建了一个lambda函数。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。

2024-03-10 14:46:08 226

原创 快速排序 双指针法 基准数随机法 C++

快速排序的性能和「划分」出的子数组的长度密切相关。直观地理解如果每次规模为 n的问题我们都划分成 1 和 n−1,每次递归的时候又向n-1的集合中递归,这种情况是最坏的,时间代价是 O(n2)。需要注意的是,这个时间复杂度只有在 随机数据 下才成立,而对于精心构造的数据则可能表现不佳。此时我们可以使用双指针的方法,这种方法能够较好地应对各种数据。核心区别在于两层while循环部分。

2024-03-06 16:24:46 284

原创 二叉搜索树最近节点查询python

题目当中未说明树是平衡树,所以如果当树退化为链表,用树的性质对值进行查询就会超时(O(n)),这样对每一个询问数组内的元素都要进行一次O(n)总时间复杂度为O(qn)。代码在经典的二分查找上进行了修改,使其能够返回题目所要求的答案,无需进行额外处理,但是时间上会慢一些。更快的做法是,通过中序遍历将树转化为排序数组,二分查找即可。,和一个由正整数组成、长度为。

2024-02-24 15:27:24 253

原创 反转链表 反转链表Ⅱ K个一组反转链表

我们可以对left到right这些节点 单独进行反转,反转之后,再把这个反转之后的链表链接到第left-1个节点和第right+1个节点之间。注意到反转链表Ⅱ是反转长度为right-left+1的链表,然后再把这个链表链接到原来的链表之上,这一题是该题的稍微延展。每k个节点进行一次反转。提供一个链表头部节点head,返回反转后的链表的头部,这是最基础的部分。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。

2024-02-22 21:38:14 330

原创 C++常引用参数

可以见如下链接,讲的很好,区别在于左值和右值。关于C++常引用参数的解释,即。

2024-02-20 14:39:14 213

原创 从前序与中序遍历序列构造二叉树

此时当前节点为4,index指向的节点也为4,他们一定是同一个节点(题目指明没有重复元素),所以当前节点一定没有左儿子,则10应该是栈中某个节点的右儿子,因为栈中的节点的右儿子的元素都没有被考虑过,且10是节点没有左儿子之后前序遍历的到的第一个节点,所以他一定是一个右儿子,而不是孙子节点等。此时,stack=[3,9,10],index指向10,那么继续往下走,遍历20,我们发现index指向的节点又变成了当前节点往左最终能到达的节点,那么我们就又要弄清楚,20到底是谁的儿子了,继续开启之前的感情纠纷。

2024-02-20 12:39:13 1041

原创 空间复杂度为O(1)的Morris遍历代码(python)

如果 predecessor 的右孩子不为空,则此时其右孩子指向 x,说明我们已经遍历完 x的左子树,将 predecessor 的右孩子置空,将x的值加入答案数组,然后访问 x的右孩子,即 x=x.right。如果x有左孩子,则找到 x左子树上最右的节点(即左子树中序遍历的最后一个节点,x在中序遍历中的前驱节点),我们记为 predecessor,根据predecessor的右孩子是否为空,进行如下操作。如果前驱节点的右子节点为空,将前驱节点的右子节点设置为当前节点,当前节点更新为当前节点的左子节点。

2024-02-14 17:35:37 904

原创 火狐浏览器AdBlocker Ultimate插件免费

链接:https://pan.baidu.com/s/1HfAWcqSVHEKWoI3cIuhEbA?更加恶心的是bing搜索现在也开始出现360的广告了,有人说是微软和360签了协议,有人说是被挟持了DNS。火狐浏览器已经禁用某些去广告的插件啦,目前有一些插件已经无法在国内安装了。想着用Adblocker过滤一下,没成想出现了下面的情况。:下载之后直接把这个文件拖入火狐浏览器里他会自动安装。

2024-02-13 18:10:23 648

原创 树的迭代遍历(前、中、后)python

中序遍历的核心是 先将根节点和根节点往左一直遍历的节点压栈(第一次压栈),出栈一个节点,记录该节点的值,再将该节点的右节点和该右节点往左一直遍历的节点压栈(如果右节点不为空,第二次压栈),这样就能实现中序遍历。这样写的思想是,保留了子节点与父节点之间的联系(通过node = stack.pop()),当一直往左遍历到头了之后,回到父节点对父节点的右子树进行同样的,从父节点的右节点开始一直往左遍历。辅助栈: 先压右 再压左 所以 先出左 再出右 很好理解 配合代码如下。

2024-02-11 13:13:51 340

原创 python字符串排序

sorted() 输入 字符串 输出数组 该数组的元素为排序后的单个字符。可以使用sorted()函数 再利用''.join()进行拼接。数组可以调用sort()方法进行排序。对应leetcode 49题。但是对字符串没有对应的方法。

2024-02-10 21:48:31 136

原创 python实现记忆化搜索利器

lru_cache(maxsize=128,typed=False) 可以对前max_size次搜索的结果进行记忆,如果maxsize=None,则LRU特性被禁用,缓存可以无限增长(cache)前身是lru_cache,即least recentely used,该装饰器可以设定缓存大小和参数类型是否区别对待。注意: 由于使用了 字典存储缓存 被装饰函数 的 固定参数 和 关键字参数都必须是 hashable的。@cache装饰器能够 缓存搜索过的i j对应的函数值,从而实现记忆化搜索。

2024-02-03 19:26:58 278

原创 python 前缀和 accumulate

类似于 matlab中的cumsum。

2024-02-03 19:15:09 116

空空如也

空空如也

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

TA关注的人

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