- 博客(1944)
- 资源 (4)
- 收藏
- 关注
原创 课程表、、
总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。在选修某些课程之前需要一些先修课程。请你判断是否可能完成所有课程的学习?,表示如果要学习课程。
2023-11-27 13:07:48
1073
原创 除法求值\
由于我们在进行广度优先搜索的过程中,不仅要找到下一个待搜索的节点【即当前节点的未处理邻节点】,还要得到到达这个待搜索节点时的权重积,因此我们对于搜索过程中的入队节点要存储节点变量名和权重积两个信息。返回 所有问题的答案。第二层哈希表 graph[s] 存储节点 s 的邻节点信息表,其中键 e 为 s 的邻节点,值 graph[s][e] 的值表示 s 节点到 e 节点的权重值。根据上面的分析,我们对一个要求解的式子 C / D,就是找到图中 C 节点到 D节点的路径,并且计算这条路径上的权重积。
2023-11-26 13:11:29
469
原创 岛屿数量、
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。讲述看到这一题的思路。
2023-11-25 16:03:40
419
原创 二叉搜索树的最小绝对差
回到本题,本题要求二叉搜索树任意两节点差的绝对值的最小值,而我们知道二叉搜索树有个性质为二叉搜索树中序遍历得到的值序列是递增有序的,因此我们只要得到中序遍历后的值序列即能用上文提及的方法来解决。的下标对(i,j)的元素之差一定大于下标对 (i,i+1)的元素之差,故不需要再被考虑。变量保存前驱节点的值,这样即能边遍历边更新答案,不再需要显式创建数组来保存,需要注意的是。求任意两个元素之差的绝对值的最小值,答案一定为相邻两个元素之差的最小值,即。的初始值需要设置成任意负数标记开头,下文代码中设置为-1。
2023-11-24 15:32:45
596
原创 二叉搜索树中第K小的元素
在二叉搜索树中,任意子节点都满足“左子节点 N。当树退化为链表,即全部为左子节点时,无论 kkk 的值大小,递归深度都为 N,使用 O(N) 时间。也就是说,本题可被转化为求中序遍历的第k个节点。当树退化为链表时,系统使用O(N)大小的栈空间。记录结果后,后续的遍历即失去意义,应提前返回。递归到第k个节点时,应记录结果res。
2023-11-22 11:19:15
696
原创 双端队列解决
(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。对于从左往右的:队头取元素,队尾压入,压入顺序是先左孩子再右孩子。对于从往左的:队尾取元素,队头压入,压入顺序是先右孩子再左孩子。空间复杂度: O(logn)O(logn)O(logn)时间复杂度: O(n)O(n)O(n)
2023-11-21 13:11:56
126
原创 Unsupervised Image-to-Image Translation Networks
大多数现有的图像到图像翻译框架——将一个域中的图像映射到另一个域的对应图像——都是基于监督学习的,即学习翻译函数需要两个域中对应的图像对。这在很大程度上限制了它们的应用,因为在两个不同的领域中捕获相应的图像通常是一项艰巨的任务。为了解决这个问题,我们提出了基于变分自动编码器和生成对抗性网络的无监督图像到图像翻译(UNIT)框架。所提出的框架可以在没有任何对应图像的情况下在两个域中学习翻译函数。我们通过结合权重共享约束和对抗性训练目标来实现这种学习能力。
2023-11-20 19:19:09
799
原创 二叉树的右视图
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。思路:用队列实现层序遍历,每次取一层,并取出每一层的最后一个元素。
2023-11-20 11:49:42
122
原创 路径总和、
不存在 sum = 5 的根节点到叶子节点的路径。添加时间复杂度, 示例: O(n)O(n)O(n)添加空间复杂度, 示例: O(n)O(n)O(n)由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。等于目标和的根节点到叶节点路径如上图所示。(1 --> 2): 和为 3。(1 --> 3): 和为 4。和一个表示目标和的整数。是指没有子节点的节点。讲述看到这一题的思路。
2023-11-19 12:59:14
127
原创 二叉树中的最大路径和
用最高节点可以将整条路径分为两部分:从该节点向左子树延伸的路径,和从该节点向右子树延伸的部分。对于每个子树的最高节点,递归计算完左右子树后,我们将左右子树维护的两条最大路径,和该点拼接起来,就可以得到以这个点为最高节点子树的最大路径。在这道题目中,路径是指从树中某个节点开始,沿着树中的边走,走到某个节点为止,路过的所有节点的集合。最后整颗树的最大路径和为: 根节点值+左子树最大路径和+右子树最大路径和,即left_max + right_max + root->val。(只能从左右子树之间选一条路径)
2023-11-18 15:45:15
440
原创 LRU缓存
那么,什么样的数据,我们判定为「有用的」的数据呢?首先要接收一个 capacity 参数作为缓存的最大容量,然后实现两个 API,一个是 put(key, val) 方法存入键值对,另一个是 get(key) 方法获取 key 对应的 val,如果 key 不存在则返回 -1。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。链表有顺序之分,插入删除快,但是查找慢。
2023-11-17 15:00:36
144
原创 环形链表、
稍加模拟之后就会发现,快指针虽然比慢指针快,但因为环的存在,快指针比慢指针先进入环,然后快指针会到慢指针的后面,最终在-4节点相遇;当没有环的情况下,快指针永远比慢指针快,所以他们出发之后便不可能再相遇,所以,这题的思路就是,快慢指针如果在链表的遍历过程中相遇,则证明链表中存在环。快慢指针可以干的事情很多,可以用于返回不支持随机访问容器(不可以直接通过下标访问元素的容器)的中间元素,比如返回链表的中间节点(876. 链表的中间结点)(题解:快慢指针解决链表的中间节点),亦或是像本题一样解决环问题等等。
2023-11-17 14:53:41
106
原创 K 个一组翻转链表
我们新建一个节点,把它接到链表的头部,让它作为 pre 的初始值,这样 head 前面就有了一个节点,我们就可以避开链表头部的边界条件。但是对于一个子链表,除了翻转其本身之外,还需要将子链表的头部与上一个子链表连接,以及子链表的尾部与下一个子链表连接。这个节点一开始被连接到了头节点的前面,而无论之后链表有没有翻转,它的 next 指针都会指向正确的头节点。因此,在翻转子链表的时候,我们不仅需要子链表头节点 head,还需要有 head 的上一个节点 pre,以便翻转完后把子链表再接回 pre。
2023-11-16 16:53:33
94
原创 有效的括号
理清题意,只需要借助栈,遍历字符串当元素为'('、'{'、'['就压栈,遇到')'、'}'、']'就和栈顶元素比较,能组成合法括号就弹出栈顶元素,不能组成合法括号就返回false,直到遍历完字符串,栈为空就返回true。首先要理解题意,什么才是题目中描述的有效括号,比如s = "({)[]}", 如下图,把同类型的括号单独按顺序拆出来,每种类型的括号都是能闭合的,但是s并不是合法的。因为最先和'{'闭合的是')',违背了 左括号必须用相同类型的右括号闭合 这个原则。,判断字符串是否有效。
2023-11-11 21:20:38
137
原创 逆波兰表达式求值
由于我们要对最近访问的数字进行操作,很显然对数字的操作是后入先出,因此使用栈结构来存储遇到的数字。而 每一次的运算结果,也是一个最近访问的数字,即需要将运算结果也入栈。逆波兰表达式就是把我们正常的中缀表达式转换为一种计算机方便实现运算的表达式。当遇到一个运算符时,我们对最近访问的两个数字执行对应的操作,并且先访问的数字在运算符之后,后访问的数字在运算符之前。有效的算符为 '+'、'-'、'*' 和 '/'。输入是一个根据逆波兰表示法表示的算术表达式。每一次的运算结果,也是一个最近访问的数字。
2023-11-11 21:18:49
105
原创 基本计算器
我们知道,如果括号之前的符号为+,则括号内的运算符号不变;如果括号之前的符号为-,则括号内的运算符要改变。当存在多个括号嵌套时,不仅要看括号前的符号,还要看上一级的括号符号是什么,才能确定这一级括号的符号。由于栈结构存储了每一层符号了,我们可以通过访问栈顶元素获取当前层的符号,然后再根据加减运算符对符号进行改变。对于括号展开,我们要一步到位将所有嵌套的括号都展开而不是一级一级去展开的话,我们就要直到每一级括号相对于最外层的符号是怎样的。而最外一层的运算,我们可以看成整体有个括号的,最外一层的符号为正。
2023-11-10 19:19:41
196
1
原创 用最少数量的箭引爆气球
在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。排序两个区间,必然有一个区间靠前[start_i, end_i],一个区间靠后[start_j, end_j];我们对所有的气球区间进行排序,维护当前的区间交集[start, end]。
2023-11-09 21:05:43
149
原创 合并区间、、
如果答案数组中最后一个区间的右端点小于当前考虑区间的左端点,说明两个区间不会重合,因此我们可以直接将当前区间加入答案数组末尾;否则,说明两个区间重合,我们需要用当前区间的右端点更新答案数组中最后一个区间的右端点,将其置为二者的较大值。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].我们可以将区间按照左端点升序排列,然后遍历区间进行合并操作。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。
2023-11-08 21:27:25
116
原创 赎金信\\
1.统计ransomNote字符串中字母个数。2.遍历magazine中字符串,对map中相应的字母个数做--。3.如果charmap中的键对应的值大于0则返回false,反之为真。
2023-11-08 21:27:18
76
原创 插入区间\
这样做的正确性在于,给定的区间集合中任意两个区间都是没有交集的,因此所有需要合并的区间,就是所有与区间。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。中下标范围是连续的,因此我们可以对所有的区间进行一次遍历,就可以找到这个连续的下标范围。特别地,如果不存在这样的区间,我们需要在遍历结束后,将。并且,在给定的区间集合已经按照左端点排序的前提下,所有与区间。互不重叠的前提下,当我们需要插入一个新的区间。的区间时,说明以后遍历到的区间不会与。
2023-11-08 21:25:34
117
原创 哈希表、、
哈希表(Hash table)以<key, value>这种 键----值 对的形式存储数据的一种数据结构。哈希表也叫散列表,其中通过key访问一个映射表来得到value的地址,这个映射表也叫做哈希函数或者散列函数,而存放value的数组叫做散列表。简单说,数组就是一张哈希表,我们使用数组下标访问数组中的内容时,和我们使用key去访问哈希表中对应的value一样。多个key可以指向同一个value,但是每个key只有一个value与之对应。
2023-11-02 20:39:45
78
原创 两数之和、、
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以想出一个时间复杂度小于。你可以按任意顺序返回答案。,请你在该数组中找出。
2023-11-02 19:59:17
115
原创 torchvision.transforms
我们在安装PyTorch时,还安装了,这是一个计算机视觉工具包。深度学习模型是由数据驱动的,数据的数量和分布对模型训练的结果起到决定性作用。所以我们需要对数据进行预处理和数据增强。下面是用数据增强,从一张图片经过各种变换生成 64 张图片,增加了数据的多样性,这可以提高模型的泛化能力。在中,我们对数据进行了一定的增强。当我们需要多个transforms操作时,需要作为一个list放在中。需要注意的是是把图片转换为张量,同时进行归一化操作,把每个通道 0~255 的值归一化为 0~1。
2023-11-02 14:34:27
127
原创 最长连续序列
的时间复杂度,只有当一个数是连续序列的第一个数的情况下才会进入内层循环,然后在内层循环中匹配连续序列中的数,因此数组中的每个数只会进入内层循环一次。遍历数组去看是否存在这个数,但其实更高效的方法是用一个哈希表存储数组中的数,这样查看一个数是否存在即能优化至。但仔细分析这个过程,我们会发现其中执行了很多不必要的枚举,如果已知有一个。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。为起点的答案,因此我们在外层循环的时候碰到这种情况跳过即可。的,不然按照上面的分析我们会从。
2023-10-29 21:14:08
115
原创 字母异位词分组
每个单词的字母顺序不同,不能直接与key比较。取出一个单词后,首先需要另存一份,sort后与哈希表key值比较;空间复杂度: unordered_mapvalue是一个数组,key值相同后把单词插入至value。是由重新排列源单词的所有字母得到的一个新单词。时间复杂度: O(n)O(n)O(n)可以按任意顺序返回结果列表。给你一个字符串数组,请你将。
2023-10-27 20:56:56
129
原创 生命游戏\
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。个格子的面板,每一个格子都可以看成是一个细胞。,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。的当前状态,返回下一个状态。
2023-10-26 20:02:37
260
原创 谈一谈,c/c++中的memset()函数
memset()是计算机中C/C++语言初始化函数,在头文件中定义。作用是将某一块内存中的内容全部设置为指定的值,这个函数通常为新申请的内存做初始化工作。buffer:为指向一片内存空间的指针(任意类型);ch: 要被设置的值。该值以 int 形式传递;count:被设置为该值的字节数。memset()它是对较大的结构体或数组进行赋值初始化的一种最快方法。下面来对它的用法进行探讨。memset()它是对较大的结构体或数组进行赋值初始化的一种最快方法;memset()
2023-10-19 21:32:35
2489
原创 有效的数独
可以使用哈希表记录每一行、每一列和每一个小九宫格中,每个数字出现的次数。只需要遍历数独一次,在遍历的过程中更新哈希表中的计数,并判断是否满足有效的数独的条件即可。分别记录数独的每一行和每一列中的每个数字的出现次数,创建三维数组\textit{subboxes}记录数独的每一个小九宫格中的每个数字的出现次数,其中。如果遍历结束之后没有出现计数大于1的情况,则符合有效的数独的条件,返回。,该单元格所在的小九宫格的行数和列数分别为。列的单元格所在的行、列和小九宫格中,数字。,则不符合有效的数独的条件,返回。
2023-10-19 21:29:40
285
原创 最小覆盖子串
是第一个得到的「可行」区间,得到这个可行区间后,我们按照「收缩」窗口的原则更新左边界,得到最小区间。我们其实做了一些无用的操作,就是更新右边界的时候「延伸」进了很多无用的。中所有的字符以及它们的个数,用一个哈希表动态维护窗口中所有的字符以及它们的个数,如果这个动态表中包含。的哈希表中各个字符的个数,那么当前的窗口是「可行」的。中可能出现重复的字符,所以我们要记录字符的个数。的哈希表中的所有字符,并且对应的个数都不小于。,更新左边界的时候「收缩」扔掉了这些无用的。中,有的字符我们是不关心的,我们只关心。
2023-10-18 21:14:04
92
原创 串联所有单词的子串
它是 words 中以 ["the","foo","bar"] 顺序排列的连接。它是 words 中以 ["foo","bar","the"] 顺序排列的连接。它是 words 中以 ["bar","the","foo"] 顺序排列的连接。因为 words.length == 2 同时 words[i].length == 3,连接的子字符串的长度必须为 6。它是 words 中以 ["bar","foo"] 顺序排列的连接。它是 words 中以 ["foo","bar"] 顺序排列的连接。
2023-10-17 21:42:12
133
原创 三数之和\
如果sum等于零,将这个三元组[nums[i], nums[left], nums[right]]添加到结果集中。如果nums[i]大于零,由于数组是有序的,后续的元素都会大于零,所以不存在满足条件的三元组,可以直接返回结果。遍历排序后的数组,对于每个固定的元素nums[i],使用双指针left和right来寻找满足条件的另外两个元素。如果i大于0且nums[i]等于nums[i-1],说明已经考虑过这个数,为了避免重复,我们跳过这个数。注意,如果出现重复的元素,需要跳过,以避免重复的三元组。
2023-10-16 20:00:27
132
原创 C++ ?:条件运算符(三目运算符)用法详解
问号前面的条件表达式的部分是要测试的条件。这就像 if 语句的括号中的表达式。如果条件是真的,则执行?和 : 之间的语句;否则,执行 : 之后的部分。这个语句被称为条件表达式,它由 3 个子表达式组成,使用问号?这 3 个表达式分别是:x<0,y = 10 和 z = 20。注意,由于需要 3 个操作数,所以条件运算符是三元运算符。图 1 说明了 3 个子表达式所扮演的角色。图 1 条件运算符中 3 个子表达式的作用。
2023-10-12 21:38:59
531
原创 Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
Gatys等人最近引入了一种神经算法,该算法以另一幅图像的风格渲染内容图像,实现了所谓的风格转换。然而,他们的框架需要缓慢的迭代优化过程,这限制了其实际应用。已经提出了使用前馈神经网络的快速近似来加速神经风格的转移。不幸的是,速度的提高是有代价的:网络通常局限于一组固定的风格,无法适应任意的新风格。在本文中,我们提出了一种简单而有效的方法,首次实现了实时的任意风格转移。我们方法的核心是一个新的自适应实例归一化(AdaIN)层,它将内容特征的均值和方差与风格特征的均值、方差对齐。
2023-10-12 21:33:26
372
原创 EXEMPLAR GUIDED UNSUPERVISED IMAGE-TOIMAGETRANSLATION WITH SEMANTIC CONSISTENCY
图像到图像(I2I)翻译是指将图像从源域映射到目标域的任务,例如语义映射到真实图像、灰度图像到彩色图像、低分辨率图像到高分辨率图像等等。深度学习的最新进展极大地提高了I2I翻译方法在许多应用中的质量,修复、属性转移、风格转移和领域自适应。这些工作中的大多数在这些跨领域I2I翻译任务中都非常成功,因为它们依赖于成对训练数据的大型数据集作为监督。
2023-10-12 16:23:56
200
原创 两数之和 II - 输入有序数组(双指针)
初始时两个指针分别指向第一个元素位置和最后一个元素的位置。每次计算两个指针指向的两个元素之和,并和目标值比较。如果两个元素之和小于目标值,则将左侧指针右移一位。如果两个元素之和大于目标值,则将右侧指针左移一位。因此 index1 = 1, index2 = 2。因此 index1 = 1, index2 = 2。的左侧,因此不会把可能的解过滤掉。,右指针指向的下标大于或等于 jjj。,因此一定是右指针左移,左指针不可能移到 iii 的右侧。,因此一定是左指针右移,右指针不可能移到 jjj 的左侧。
2023-10-10 20:28:20
129
原创 CoMoGAN: continuous model-guided image-to-image translation
CoMoGAN是一个依赖于函数流形上目标数据的无监督重组的连续GAN。为此,我们引入了一种新的函数实例归一化层和残差机制,它们将图像内容从目标流形上的位置中分离出来。我们依靠原始的物理模型来指导训练,同时允许私有的模型/翻译功能。CoMoGAN可以与任何GAN主干一起使用,并允许新类型的图像翻译,例如循环图像翻译(如延时生成)或分离线性翻译。在所有数据集上,它都优于文献。图像到图像(i2i)翻译网络学习域之间的翻译,将从数据集学习的目标外观应用于源图像的上下文。
2023-10-10 19:58:27
429
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅