- 博客(304)
- 收藏
- 关注

原创 动手学深度学习——softmax回归(原理解释+代码详解)
sum运算符:给定一个矩阵X,我们可以对所有元素求和(默认情况下)。也可以只求同一个轴上的元素,即同一列(轴0)或同一行(轴1)。对每个项求幂(使用exp);对每一行求和(小批量中每个样本是一行),得到每个样本的规范化常数;将每一行除以其规范化常数,确保结果的和为1。
2023-07-16 10:09:51
43801
16
原创 【leetcode】222. 完全二叉树的节点个数
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(从第 0 层开始),则该层包含 1~ 2h 个节点。给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
2025-09-01 21:58:33
246
原创 【leetcode】173. 二叉搜索树迭代器
BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 的中序遍历中至少存在一个下一个数字。注意,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。否则返回 false。int next()将指针向右移动,然后返回指针处的数字。
2025-09-01 21:53:40
133
原创 【leetcode】124. 二叉树中的最大路径和
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。给你一个二叉树的根节点 root ,返回其 最大路径和。路径和 是路径中各节点值的总和。
2025-08-31 21:45:00
158
原创 包的相对导入
包的相对导入(relative import),就是在一个包(package)里,让模块A引用模块B,不是用绝对路径(从顶层包开始写全路径),而是用“相对”位置(当前文件夹、父文件夹等)。
2025-08-31 20:30:00
261
原创 【leetcode】129. 求根到叶子节点数字之和
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123。计算从根节点到叶节点生成的 所有数字之和。叶节点 是指没有子节点的节点。
2025-08-30 20:45:00
378
原创 【leetcode】112. 路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则,返回 false。叶子节点 是指没有子节点的节点。
2025-08-30 20:30:00
255
原创 【leetcode】117. 填充每个节点的下一个右侧节点指针 II
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。
2025-08-29 18:46:35
321
原创 【leetcode】105. 从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。
2025-08-27 21:15:09
259
原创 【leetcode】100.相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2025-08-27 21:06:51
309
原创 【leetcode】146. LRU缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1。// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)lRUCache.get(1);// 返回 -1 (未找到)lRUCache.put(1, 1);// 缓存是 {1=1}lRUCache.get(1);
2025-08-26 21:39:53
940
原创 【leetcode】86. 分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。
2025-08-26 21:36:56
588
原创 【leetcode】19. 删除链表的倒数第N个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1。输入:head = [1], n = 1。
2025-08-24 20:45:00
275
原创 【leetcode】25. K个一组翻转链表
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
2025-08-24 20:15:00
301
原创 【leetcode】92. 反转链表2
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。
2025-08-23 19:30:00
205
原创 【leeetcode】2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。
2025-08-23 19:30:00
120
原创 【leetcode】128. 最长子序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]输入:nums = [1,0,1,2]
2025-08-22 20:45:00
228
原创 【leetcode】6. Z字形变换
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。输入:s = “PAYPALISHIRING”, numRows = 3。输入:s = “PAYPALISHIRING”, numRows = 4。输入:s = “A”, numRows = 1。输出:“PAHNAPLSIIGYIR”输出:“PINALSIGYAHRPI”
2025-08-21 21:15:00
366
原创 【leetcode】202. 快乐数
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 n 是 快乐数 就返回 true;不是,则返回 false。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。编写一个算法来判断一个数 n 是不是快乐数。
2025-08-21 21:00:00
507
原创 【leetcode】290. 单词规律
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”输入: pattern = “aaaa”, s = “dog cat cat dog”给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
2025-08-20 20:30:00
313
原创 【leetcode】205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。输入:s = “paper”, t = “title”给定两个字符串 s 和 t ,判断它们是否是同构的。输入:s = “egg”, t = “add”输入:s = “foo”, t = “bar”
2025-08-20 20:15:00
385
原创 【leetcode】383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。输入:ransomNote = “aa”, magazine = “aab”输入:ransomNote = “aa”, magazine = “ab”magazine 中的每个字符只能在 ransomNote 中使用一次。输入:ransomNote = “a”, magazine = “b”如果可以,返回 true;否则返回 false。
2025-08-19 20:28:05
255
1
原创 【leetcode】11. 盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。
2025-08-19 19:27:58
258
原创 【leetcode】167. 两数之和2——输入有序数组
如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。因此 index1 = 1, index2 = 2。返回 [1, 2]。因此 index1 = 1, index2 = 2。输入:numbers = [2,7,11,15], target = 9。
2025-08-18 20:07:40
505
原创 【leetcode】392. 判断子序列
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。如果有大量输入的 S,称作 S1, S2, …, Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?给定字符串 s 和 t ,判断 s 是否为 t 的子序列。输入:s = “abc”, t = “ahbgdc”输入:s = “axc”, t = “ahbgdc”
2025-08-18 19:30:28
357
原创 【leetcode】14. 最长公共前缀
输入:strs = [“flower”,“flow”,“flight”]输入:strs = [“dog”,“racecar”,“car”]编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。解释:输入不存在公共前缀。
2025-08-17 21:00:00
266
原创 【leetcode】58. 最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。输入:s = " fly me to the moon "输入:s = “luffy is still joyboy”单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。解释:最后一个单词是长度为 6 的“joyboy”。解释:最后一个单词是“World”,长度为 5。解释:最后一个单词是“moon”,长度为 4。输入:s = “Hello World”
2025-08-17 20:30:00
292
原创 【leetcode】12. 整数转罗马数字
如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。输入:num = 58。
2025-08-16 20:30:00
268
原创 【leetcode】274. H指数
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。输入:citations = [3,0,6,1,5]输入:citations = [1,3,1]
2025-08-15 19:22:02
145
原创 【leetcode】55. 跳跃游戏1
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]
2025-08-13 20:28:41
257
原创 【leetcode】135. 分发糖果
给你一个整数数组 ratings 表示每个孩子的评分。解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。从左到右,从右到左,满足评分高的孩子比评分低的孩子糖果数量多。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。相邻两个孩子中,评分更高的那个会获得更多的糖果。输入:ratings = [1,0,2]输入:ratings = [1,2,2]
2025-08-13 20:23:17
351
原创 【leetcode】134. 加油站
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。因此,3 可为起始索引。
2025-08-12 21:06:54
490
原创 【leetcode】45. 跳跃游戏2
每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。输入: nums = [2,3,1,1,4]解释: 跳到最后一个位置的最小跳跃数是 2。输入: nums = [2,3,0,1,4]
2025-08-12 21:06:40
195
原创 【leetcode】189. 轮转数组
输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]
2025-08-11 21:14:47
313
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人