自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python 实现 Levenshtein Distance |Python 主题月

substitute,将一个字符替换成另一个字符,编辑距离一般定义为 1 ,但也可能被定义为 2add,插入一个字符,编辑距离定义为 1delete,删除一个字符,编辑距离定义为 1本文通过例子详细介绍了 Levenshtein Distance 的原理,并且根据原理进行了 Python 代码的实现。

2024-08-21 11:02:33 475

原创 leetcode 2392. Build a Matrix With Conditions(python)

描述You are given a positive integer k. You are also given:a 2D integer array rowConditions of size n where rowConditions[i] = [abovei, belowi], anda 2D integer array colConditions of size m where colConditions[i] = [lefti, righti].The two arrays conta

2024-08-20 11:30:05 239

原创 leetcode 2399. Check Distances Between Same Letters(python)

其实这道题就是考察一个很简单的数组遍历,因为题目中已经给出了字符肯定会有两次,所以我们直接使用一个字典 d 将出现的字符及其位置都存好,然后只要从 a 开始遍历到 z ,只要该字符出现在 d 中(不存在的就不用管了),我们判断如果该字符在 d 中存的距离不等于 distance 存的距离,那么就直接返回 False ,否则遍历结束直接返回 True。根据题意,给定一个仅由小写英文字母组成的索引为 0 的字符串 s ,其中 s 中的每个字母恰好出现两次。在间隔良好的字符串中,第 i。

2024-08-20 11:29:34 275

原创 Python 实现 Tri-Gram

上文介绍了Python 实现 Bi-Gram,本文继续深入,介绍 Python 实现 Tri-Gram。

2024-08-06 09:26:34 348

原创 leetcode 2400. Number of Ways to Reach a Position After Exactly k Steps(python)

执行一次操作可以向左移动一个位置,或向右移动一个位置。给定一个正整数 k ,在执行 k 次操作情况下,返回从 startPos 到达 endPos 位置的不同方式的数量。由于答案可能非常大,因此以 10^9 + 7 为模返回。如果所进行的步骤的顺序不完全相同,则两种方式被认为是不同的。需要注意的时避免数值太多,我们每次在计算的时候要取模,并且为了速度能快点,我们用到了内置的函数修饰 @cache ,其实也就是实现了记忆化的 DFS。时间复杂度为 O(N) ,空间复杂度为 O(N)。

2024-08-05 17:29:01 415

原创 leetcode 2401. Longest Nice Subarray(python)

这个结论得出就可以知道我们的算法可以暴力解决,对于 nums 中的每个位置,我们向前找子数组即可,不用担心会超时成为时间复杂度 O(N^2) 的运算。另外我们想要解决子数组中每对元素的按位与都为 0 ,其实这里有个小技巧,只要我们将子数组中的所有元素都进行按位或运算得到 cur ,那么只要来了一个新的元素 nums[j] ,只要 cur & nums[j] 等于 0 就相当于 nums[j] 和子数组中的所有元素的按位与运算都为 0。请注意长度为 1 的子数组总是被认为是好的。您的支持是我最大的动力。

2024-08-05 17:28:30 401

原创 leetcode 2402. Meeting Rooms III(python)

像这种题直接使用两个小根堆来解决即可,因为会议室有两种状态——空闲和正在使用,我们就定义两个小根堆 free 和 using ,free 中按照从小到大存储会议室编号,using 中按照(会议的结束时间,正在使用的会议室编号)来按照从小到大存储,因为会议室有“先到先得”的条件,所以我们将 meetings 进行排序,另外定义一个计数器 cnt 来对每个会议室的使用情况进行统计。有编号从 0 到 n - 1 的 n 个房间,。最后我们遍历 cnt ,找出出现次数最多,但是序号大小最小的会议室编号,返回即可。

2024-07-31 16:37:35 311

原创 leetcode 2421. Number of Good Paths(python)

最开始我们将这棵树中的节点都单独拿出来,想象他们彼此都是没有联系的,此时也就是一个有 N 个节点的没有互相联系的图,此时已经有 N 条有用的路径出现了,加入到 result 中,也就是每个节点自身。然后由于每个有用的路径都是起始节点相同且大于等于中间的节点值,所以我们在图中最先找出现值最小的节点 x ,这样可以始终保证连通块的代表元的节点值是最大的。对于节点 x 及其邻居 y ,如果 y 所处的连通分量的最大节点值不超过 vals[x] ,那么可以把 y 所处的连通块合并到 x 所处的连通块中。

2024-07-31 16:36:59 252

原创 leetcode 2477. Minimum Fuel Cost to Report to the Capital(python)

这道题考查图和贪心的结合点,我们先构建出邻接图 g ,然后从 0 开始进行递归,使用递归函数来计算已经达到该节点所消耗的燃料数 ,我们经过观察例子总结出来到达此刻节点的消耗的燃料数是其子树节点个数除 seats 向上取整的结果,我们将此值加入到结果 result 中,经过递归将所有子树消耗的燃料不断累加起来就是最后的结果。在两个城市之间旅行的费用是一升燃料,返回到达首都的最低燃料升数。根据题意,有一个树结构的国家网络,由 n 个城市组成,编号从 0 到 n-1 ,正好 n-1 条道路。

2024-07-29 17:05:07 294

原创 viterbi 算法 python 实现

默认读者已经了解 HMM 相关的内容,并对 viterbi 算法有了解。

2024-07-29 17:04:36 475

原创 BI-LSTM+Attention 的 tensorflow-1.14 实现

这里只是用简单例子演示关于 self-attention 的逻辑,判断一句话的情感是正面或者是负面,具体原理自己百度即可。

2024-07-28 07:54:54 824

原创 leetcode 24. Swap Nodes in Pairs(python)

原题链接:https://leetcode.com/problems/swap-nodes-in-pairs/我们可以用相同的解题方法,但是按照题意不修改节点值来完成题目。运行结果可以看出,所占内存都减小显著。您的支持是我最大的动力。

2024-07-26 10:48:09 340

原创 leetcode 62. Unique Paths(python)

另外可以将动态规划的 dp 压缩成一维的列表进行解题,原理和上面大同小异, df[j] = df[j]+df[j-1] 就是相当于上面解法的 dp[i][j] = dp[i][j-1] + dp[i-1][j] ,能节省不少的内存。根据题意,就是给出了一个 m x n 大小的方格矩阵,左上角是起始位置,右下角是结束位置,问从开始位置走到结束位置过程中,只能向下和向右走,一共有多少种不同的路径。原题链接:https://leetcode.com/problems/unique-paths/

2024-07-26 10:47:39 345

原创 leetcode 63. Unique Paths II(python)

有经验的同学都知道这种一般都是动态规划来求解,但是 m 和 n 小的时候用回溯的思想也能找到可能路径,通过写递归函数来进行求解,本题的 m 和 n 比较大,从运行结果来看也是超时,但是不妨碍我们试着用这种方式解体。根据题意,就是给出了一个 m x n 的地盘,你在左上角只能向右、向下两种方式走路,最后走到右下角,碰到障碍物则无法前进,求有多少种不同的路径。原题链接:https://leetcode.com/problems/unique-paths-ii/您的支持是我最大的动力。

2024-07-25 09:04:50 611

原创 NLP 遇上中秋节

之前已经写过诗了,这次就换个口味,用 Seq2Seq 写写对联。那我们开始测试写藏头诗吧,主要使用了一些中秋常见的人物和话题,说实话有点人工智障的感觉,但是已经迈出了第一步了,之后可以继续完善写出诗的质量,毕竟模型也忒简单了点,就是应个景图个乐,给大家中秋助助兴。模型训练好,在用模型写诗的过程也和上面类似,每次输入上一个时刻的字以及上一个时刻的状态,来预测当前的字,知道满足结束条件,如够多少个字,或者遇到预测出句号为止。这里主要对数据的处理做简单的介绍,其他的模型搭建和训练过程套路基本不变,这里不再赘述。

2024-07-25 09:02:58 554

原创 leetcode 419. Battleships in a Board(python)

就是有一个 m * n 的甲板上面有很多格子,每个格子可能是 X 表示有战列舰,可能是空的表示啥都没有,题目要求战列舰只能是垂直或者水平的放置,并且形状为 1 * k 或者 k * 1 (这句话我彻底懵逼了,结合例子一中的图片,我反正是没搞懂是在干啥,我觉得可能是战列舰有大有小,可能是形状为 1 * k 或者 k * 1 的大小),战列舰之间也不能相连,求在甲板上的战列舰的个数。原题链接:https://leetcode.com/problems/battleships-in-a-board/

2024-07-24 17:53:27 371

原创 leetcode 482. License Key Formatting(python)

根据题意,就是将给定的 s ,转换成用短线连接的大写字符串,并且按照顺序,除了第一部分之外,其他每个部分都是要分 k 个字符。N 如果不能整除 k ,结果的第一个部分就是余数长度的字符串 s[:N%k] ,此时的 s[N%k:] 字符串的长度肯定能整除 k ,也就是后面的字符串肯定能每 k 个字符组成一部分,用短线连接即可。N 如果能整除 k ,结果的第一部分就是空字符串,后面的字符串直接按照每部分 k 个字符用短线连接即可。如例子 1 中所示的情况。您的支持是我最大的动力。

2024-07-24 17:52:56 294

原创 leetcode 806. Number of Lines To Write String(python)

根据题意,widths 就是给出了 26 个小写英文字母中,每个字母所占的像素的大小,s 是给出了一个小写字母的字符串,定义每行最多有 100 个像素,将 s 中每个字母按照顺序从左到右排列,如果该行字母所占的像素和超出了 100 个像素,则从下一行开始排列字母,最后求一共占了多少行,并且最后一行的像素大小为多少。原题链接:https://leetcode.com/problems/number-of-lines-to-write-string/您的支持是我最大的动力。

2024-07-19 08:21:51 376

原创 Word2Vec 的 tensorflow-1.14 实现

【代码】Word2Vec 的 tensorflow-1.14 实现。

2024-07-19 08:20:34 238

原创 leetcode 814. Binary Tree Pruning(python)

就是使用的 DFS ,判断最底层的节点的左子树是否为空,右子树是否为空,如果左右子树都为空且值为 0 的节点,那么将其变为空。然后向上回溯,上层的节点通过同样的方法也能变为空,知道最后将所有节点从下到上都判断一次,然后返回新树的根节点。根据题意,就是给出了一个二叉树 root ,然后让我们进行树的剪枝,对不包含 1 的子树进行移除,返回移除了节点后的树的索引。原题链接:https://leetcode.com/problems/binary-tree-pruning/您的支持是我最大的动力。

2024-07-18 16:07:51 156

原创 leetcode 856. Score of Parentheses(python)

其实对于括号类型的题目,天生的特性完全可以用栈的结构来进行解答的,这道题也一样但需要结合题意进行一番变化。这种乘二的操作也很适合位移运算,其实我们只要知道每对 () 的深度 d 就可以得到这个括号对的分数为 2^d ,也就是 1>>d ,并加入到结果 result 中去。原题链接:https://leetcode.com/problems/score-of-parentheses/最后得到的 stack[-1] 即为答案。您的支持是我最大的动力。

2024-07-18 16:07:19 354

原创 使用 LSTM 进行字符级别的文本生成

本文展示了如何使用 LSTM 模型进行字符级别的文本生成过程,整个过程如果要达到文本通顺的程度至少需要 20 个 epoch ,以及至少 1M 字符的语料库,而且由于 RNN 网络计算量巨大所以建议在 GPU 上运行此脚本。

2024-07-13 10:55:59 578

原创 leetcode 861. Score After Flipping Matrix(python)

根据题意,就是给出了一个 m*n 的矩阵 grid ,执行任意次数的特殊的操作,然后将每一行的数字当作二进制数,将所有的行形成的二进制进行相加,可以得到的最大的和是多少。原题链接:https://leetcode.com/problems/score-after-flipping-matrix/特殊操作就是可以将任意一行或者任意一列中的数字从 0 变成 1 ,或者从 1 变成 0。将上述过程简化一下,使用异或运算和 zip 函数可以省去很多代码。本题很适合贪心优化算法求解,代码会大幅缩减,直接看。

2024-07-12 16:49:32 242

原创 leetcode 905. Sort Array By Parity(python)

根据题意,就是给出了一个整数列表 nums ,要求将其中的全部偶数都放到全部的奇数前面。原题链接:https://leetcode.com/problems/sort-array-by-parity/另外可以直接在原列表中进行操作,这样不用占用额外的空间。还可以使用 python 的内置函数 sort ,自定义比较器即可。您的支持是我最大的动力。

2024-07-12 16:48:32 221

原创 leetcode 921. Minimum Add to Make Parentheses Valid(python)

上面的解法理解起来比较麻烦,可以直接使用栈来存储遍历到的每个元素,只有当栈的最后一个元素为 ( 且当前的元素为 ) 才执行栈的弹出功能,否则将当前元素加入栈中,最后栈中存储的都是不合法的括号,即需要进行的最少的操作次数。其实这个题思路比较简单,考察的就是栈的使用,只要找出不合法的圆括号有几个,那就至少需要进行多少次操作。根据题意,就是给出了一个左右圆括号组成的字符串,让我们判断这个字符串是否是合法的,并且在不合法的时候至少通过操作变成合法的需要次操作。您的支持是我最大的动力。

2024-03-27 16:46:41 347

原创 leetcode 938. Range Sum of BST(python)

根据题意,就是给出了一颗二叉树,和一个范围 [low, high] ,让我们求在这个范围内的节点的值的和是多少,思路比较简单,就是用递归的思想,判断每个节点的值如果在 [low, high] 中就累加起来,否则不去管他,最后递归的结果就是答案。上面的解法直接通过递归遍历了所有的节点,其实我们可以根据二叉树左子树小于根结点,右子树大雨根结点来减少计算量。原题链接:https://leetcode.com/problems/range-sum-of-bst/同样的思路,不同的写法。您的支持是我最大的动力。

2024-03-27 16:45:42 315

原创 leetcode 979. Distribute Coins in Binary Tree(python)

这是一个二叉树的平衡问题,最终的操作次数就是左子树和右子树的不平衡总和,以例子 3 为例,左子树的不平衡状态为 1 ,相当于缺一个金币,需要从 root 拿一个金币,右子树的不平衡状态为 1 ,相当于多出来一个金币需要往 root 上交一个,所以总的操作次数就是左右子树各自不平衡金币个数绝对值之和。我们使用 result 来计数总共的操作次数,每次返回的不平衡结果=当前的金币+左子树不平衡的金币绝对值+右子树不平衡的金币绝对值-1。您的支持是我最大的动力。

2024-03-26 18:17:39 290

原创 微调 GPT-2 完成文本生成任务

我们使用kears_nlp中原生的GPT-2模型(),首先是指定我们的PROMPT是,也就是让 GPT-2 从这里开始文本生成,调用方式很简单,生成200 个token 耗时22.81 s,速度大约。另外我想尝试下中文的文本生成效果,但是找到了官方的kears_nlp可以调用的GPT-2全部都是英文数据训练出来的,我不太死心,还是想试试,所以调用,我也将PROMPT改成了我爱中国!,生成的结果简直就是乱七八糟,狗屁不通,自己把自己卡死掉了。

2024-03-26 18:16:56 741

原创 leetcode 980. Unique Paths III(python)

原题链接:https://leetcode.com/problems/unique-paths-iii/题目要求我们要从开始位置走,到结束位置停下来,有多少种不同的走法可以将所有的空位置都经过一次。

2024-03-21 18:04:53 836

原创 leetcode 1008. Construct Binary Search Tree from Preorder Traversal(python)

前序遍历有一个明显的特点,第一个出现的元素肯定是属于根节点,从第二个元素开始后面的元素肯定是属于左右子树的,而左子树都比根节点小,右子树都比右子树大,前序遍历会先遍历完左子树再遍历右子树,所以从第二个元素开始往后找出大于根节点的元素索引 i ,这就是右子树的根节点 ,左子树的元素则在 preorder[1:i] 列表中,右子树的元素则在 preorder[i:] 列表中,递归执行这个过程得到的树即为结果。根据题意,就是给出了一个二叉树的前序遍历结果,然后要求根据前序遍历构造一棵树,并且返回树的根节点。

2024-03-21 18:04:20 919

原创 leetcode 1110. Delete Nodes And Return Forest(python)

递归函数的操作是比较繁琐的,因为假如当前节点是需要被删除的,那么需要将其形成的左右非空两个子树加入到结果列表中,并且要将当前节点置空。这里的节点置空操作是需要注意的,因为结点置空不是直接 root=None , 而是需要将其父节点的 left 引用或者 right 引用置空才对。根据题意,就是给出了一个二叉树,并且给出了一个需要删除的节点值列表 to_delete ,题目要求我们将节点值出现在 to_delete 中的节点都删去,并且将删除之后形成的多个森林的引用都放入列表中。您的支持是我最大的动力。

2024-03-20 17:26:06 325

原创 leetcode 1114. Print in Order(python)

题中要保证 second() 在 first() 之后执行,third() 在 second() 之后执行,所以需要两把锁,第一把锁控制 second() 在 first() 之后执行 ,第二把锁控制 third() 在 second() 之后执行。根据题意,就是要在给定 nums 顺序的情况下,保证 second() 在 first() 之后执行,third() 在 second() 之后执行,其实就是在考 python 线程的知识点,关键是获取锁和释放锁。您的支持是我最大的动力。

2024-03-20 17:25:36 374

原创 leetcode 1123. Lowest Common Ancestor of Deepest Leaves(python)

另外可以换一种比较朴素的思路,先使用 DFS 遍历一次二叉树,找出树中叶子节点的最大深度以及最大深度的所有叶子结点的个数,然后再用另一个 DFS 遍历二叉树,如果第一次出现以某个节点为根节点的子树包含了所有的最深叶子节点,那么它就是答案。根据题意,就是给出了一个二叉树的根节点引用 root ,让我们找出最低的共同祖先节点(lowest common ancestor)。所以使用递归思想,定义递归函数 dfs ,每次调用 dfs 返回当前深度的最低的共同祖先节点引用以及当前的深度。您的支持是我最大的动力。

2024-03-19 10:52:32 821

原创 使用 Keras 的 Stable Diffusion 实现高性能文生图

在本文中,我们将使用基于 KerasCV 实现的模型进行图像生成,这是由stable.ai开发的文本生成图像的多模态模型。是一种功能强大的开源的文本到图像生成模型。虽然市场上存在多种开源实现可以让用户根据文本提示轻松创建图像,但 KerasCV 有一些独特的优势来加速图片生成,其中包括XLA 编译和混合精度支持等特性。所以本文除了介绍如何使用 KerasCV 内置的模块来生成图像,另外我们还通过对比展示了使用 KerasCV 特性所带来的图片加速优势。

2024-03-19 10:50:45 1217

原创 leetcode 1219. Path with Maximum Gold(python)

根据题意,就是给出了一个金矿的矩阵 grid ,大小为 m*n ,每个位置 grid[i][j] 都有一个数字代表金子数量,你现在是一个掘金者,可以从金矿矩阵的任意一个位置出发,然后向上下左右四个方向都能行进,但是不能访问金子数为 0 ,同时不能走走过的位置,求能得到的金子数最多数量。真很明显就是一个 DFS 问题,只要注意不会触发边界禁止条件就可以,以所有位置为起点得到能获得的金子的最大数量,即为 dp ,然后从 dp 中找出最大的数字,即为答案。您的支持是我最大的动力。

2024-03-13 16:10:50 245

原创 leetcode 1282. Group the People Given the Group Size They Belong To(python)

然后又给了一个整数列表 groupSizes ,其中 groupSizes[i] 表示的是索引为 i 的人所在组的大小。例如,如果 groupSizes[1] = 3,则索引为 1 的人必须在大小为 3 的组中。根据题意,有 n 个人被分成不知数量的几个组,每个人的唯一 ID 标记就是索引 0 到 n-1 ,每个人都应该恰好出现在一个组中,并且每个人都必须在一个组中。要求返回一个满足题意的列表,如果有多个答案,则返回其中任何一个。遍历最后得到的 result 就是答案。您的支持是我最大的动力。

2024-03-13 16:04:11 422

原创 leetcode 1325. Delete Leaves With a Given Value(python)

根据题意,就是给出了一个二叉树,让我们删除值为 target 的叶子结点,注意,在删除叶子结点之后可能父节点也称为了叶子结点,如果值为 target 也应该删除,不断重复此类操作直到不能进行下去,返回新树的索引。原题链接:https://leetcode.com/problems/delete-leaves-with-a-given-value/原题链接:https://leetcode.com/problems/delete-leaves-with-a-given-value/您的支持是我最大的动力。

2024-03-12 10:08:05 239

原创 leetcode 1343. Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold(python)

其实主要的耗时操作都在取自列表、求和、除法这三个关键的步骤上面,我们通过使用滑动窗口,来缩短计算时间,也就是每次只计算长度为 k 的窗口大小的和记录为 total ,向右滑动一个元素,计算新的窗口的和就是减去之前窗口的第一个元素且加上新进入窗口的最后一个元素,这样就可以大幅度减少求和的运算。您的支持是我最大的动力。

2024-03-12 09:23:43 350

原创 leetcode 1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree(python)

原题链接:https://leetcode.com/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/当 cloned 根结点的值和 target 节点的值一样的时候,返回 clone ,否则使用递归遍历当前节点的左右两个子树。直接使用栈 stack ,保存所有的节点,然后判断当前节点的值是否和 target 相同,如果相同返回当前节点的引用。您的支持是我最大的动力。

2024-03-11 09:44:04 281

原创 直观感受卷积 VAE 模型的潜在分布空间

本文展示了在MNIST数据集上训练。VAE是自动编码器的概率模型,它会将高维输入数据压缩为维度较小的表示形式,但是实现方式与将输入映射到潜在向量的传统自动编码器不同,VAE,最经典的方式莫过于高斯分布的均值和方差。这种方法会产生一个连续的、结构化的潜在空间,这对于图像生成的多样化很有用。

2024-03-11 09:42:59 1327

空空如也

空空如也

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

TA关注的人

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