自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

贾维斯的小屋

手工智能小作坊,欢迎访问另一个小作坊:https://lixudong.ink

  • 博客(94)
  • 资源 (8)
  • 收藏
  • 关注

原创 数据结构与算法——一个模板手撕滑动窗

一、滑动窗模板参考自leetcodedef solution(s, t): # hash_记录t中字符出现的次数,window记录窗口中相应字符出现的次数 hash_, window = {}, {} # 根据t构建hash_字典 for c in t: hash_[c] = hash_.get(c, 0) + 1 # 初始化窗口左右边界,左闭右开区间 [left, right) left, right = 0, 0 # valid表示窗口中满足要求的字符的个数 valid =

2020-07-13 15:36:06 357

原创 数据结构与算法——使用优先队列的题目

一、数组中第k大元素此题为leetcode第215题一、数据流中的第k大元素此题为leetcode第703题思路:建立小根堆,维护长度为k。添加元素时,列表元素小于k时直接添加,否则新元素大于堆顶元素时,替换堆顶元素。import heapqclass KthLargest: def __init__(self, k: int, nums: List[int]): self.nums = nums self.k = k heapq.heap

2020-07-10 23:00:09 397

原创 数据结构预算法——使用栈和队列的题目

一、柱状图中最大的矩形此题为leetcode第84题思路:枚举每一根柱子i的高度hight[i],随后我们需要进行向左右两边扩展,使得扩展到的柱子的高度均不小于h。换句话说,我们需要找到左右两侧最近的高度小于h的柱子,这样这两根柱子之间(不包括其本身)的所有柱子高度均不小于h,并且就是i能够扩展到的最远范围。使用单调栈可以实现这样的功能,即栈中元素都是单调递增或递减的。这里我们使用单调递增的栈。(1)当前位第i个柱子,栈中存放j值,j为i左边的柱子。从栈底到栈顶,j的值严格单调递增,同时对应的高度值

2020-07-06 16:23:06 353

原创 数据结构与算法——DFS/BFS题目

一、电话号码的字母组合此题为leetcode第17题思路:使用深度优先搜索。在每次递归时有个变量combination,表示当前递归深度下的字母组合,如果它的长度等于digits的长度,那么说明递归到了最深,将它放入答案中。否则遍历下一个digits里的字母,将其与combination结合传入下层递归。class Solution: def letterCombinations(self, digits: str) -> List[str]: self.phone =

2020-07-01 17:33:21 376

原创 数据结构与算法——二叉树的题目

一、二叉搜索树的最近公共祖先此题为leetcode第235题思路:因为此题的前提是二叉搜索树,有个很好的性质即根节点的左子树的值都小于根节点,右子树的值都大于根节点。因此给定两个值p和q,如果p和q都小于根节点的话说明他们一定在左子树,继续在左子树寻找,对于右子树也是如此;如果p和q有一个小于等于根节点而另一个大于等于根节点,说明当前根节点便是最近公共祖先。class Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: '

2020-06-28 21:27:18 442

原创 数据结构与算法——动态规划系列题目

一、最长回文子串此题为leetcode第5题思路:此题的“中心扩展法”在前面已经讲过,这里解释动态规划解法。设状态dp[i][j]的含义是在区间[i, j]的字符串是否为回文串。如果[i+1, j-1]区间内已经是回文串了,那么只要s[i] == s[j]那么[i, j]区间的字符串便是回文串。另外要主要内外循环的次序。一般是先循环i再循环j,但在这里会导致参考的状态还没有被计算出来。比如当下计算dp[i][j],会用到dp[i+1][j-1],由于先循环的i所以这个状态还没有被计算出来。因此要先循环j

2020-06-27 11:07:58 425

原创 数据结构与算法——高智商犯罪之打家劫舍

题目以偷东西为背景,但偷东西肯定是违法的,我们千万不能用动态规划去偷东西,用什么算法都不可以,程序员虽然苦逼但这是正当行业,哪怕去摆地摊啊,让我们一起抵制偷窃,共建社会主义和谐社会一、打家劫舍此题为leetcode第198题思路:设状态dp[i]的含义是到第i家时所偷窃到的最高金额。如果偷窃第i家,那么第i – 1家肯定没有被偷窃,偷窃的金额只能是第i-2家加上第i家的。如果不偷窃第i家,那么第i-1家肯定被偷窃了,当前偷窃的金额就是第i-1家。状态转移方程为:dp[i]=max(dp[i−2]+n

2020-06-26 16:15:33 355

原创 数据结构与算法——经典背包问题

一、0-1背包问题https://www.acwing.com/problem/content/description/2/思路:设状态dp[i][j]的含义是装入前i件物品装入容量为j的背包里时的最大总价值,那么状态转移方程为:因为dp[i][j]只和dp[i-1][j]有关,所以状态可以转为一维的。在遍历j的时候,要逆序遍历,因为要保证较小的j是上一轮的状态:比如i = 3, j = 8, v[3] = 5, w[3] = 1,一维的转移方程为dp[8] = max(dp[8],dp[3]

2020-06-25 16:45:23 969

原创 数据结构与算法——令人烦恼的括号

一、有效的括号此题在《数据结构与算法——栈与队列》中出现二、括号生成此题在《数据结构与算法——广度优先与深度优先搜索》中出现三、最长有效括号此题为leetcode第32题思路:考虑使用动态规划,定义状态dp[i]为以第i个元素结尾的最长有效括号的长度。有效的括号一定是以“)”结尾的,因此我们只需考察以“)”的字符,状态转移方程如下图所示。注意dp的边界条件,图中并没有体现出来。class Solution: def longestValidParentheses(self, s: s

2020-06-21 01:32:34 379

原创 数据结构与算法——数学相关

一、整数反转此题为leetcode第7题思路:基本思路就是,初始化y = 0,进入while循环,令y = y * 10 + x % 10,并且x = // 10,当x != 0的时候继续循环,最后返回y。这里需要注意几点:(1)x是有符号整数,取余的时候要对x的绝对值取余,否则负数取余会有问题;(2)此题有范围限制,循环的时候需要判断一下y的范围;(3)当x是负数的时候,返回的y注意也加上负号class Solution: def reverse(self, x: int) -> in

2020-06-19 19:20:07 452

原创 数据结构与算法——其他关于字符串的题目

一、二、三、二进制求和此题为leetcode第67题思路:由于a、b字符串长度不一定相等,因此可以右对齐然后前面填0使两者对其,使用字符串的zfill()方法。然后从后面依次遍历,设置一个初始为0的carry标志位,如果字符为’1’,那么carry+1。如果carry为2或0,那么当前位变为0;如果carry为1或3,那么当前位边为1。当然还有进位需要考虑,carry为2或3时需要进1位,carry为0或1时不需要进位,那么carry变为carry // 2即可。class Solution:

2020-06-17 18:48:32 397

原创 数据结构与算法——字符串的中心扩展

一、最长回文子串此题为leetcode第5题思路:根据回文字符串的特点,如果以字符a为中心,各向两边扩散一个字符,这两个字符一样的话这个子串一定是回文子串,并且可以继续扩散;若扩散的两个字符不一样,那么这个子串一定不是回文子串,并且无法继续扩散。中心扩散的另一种形式是以一个空字符为中心向两边扩散,扩散的条件和上面的一样。所以我们需要定义一个check函数,传入开始扩散的左右起始点,一步一步向两边扩散,直到组不成回文子串位置,返回这个子串的长度。class Solution: # 扩展中心

2020-06-15 19:29:23 383

原创 数据结构与算法——日取其半之二分查找

一、搜索选择排序数组此题为leetcode第33题思路:和常规的二分法套路差不多,定义左右指针left和right,求得中间值mid,此时有一半数组肯定是有序的,如下图所示。如果nums[left] < nums[mid],那就是[left, mid]有序,如果nums[left] <= target < nums[mid],那么就在左半边找,否则在右半边找。如果有nums[mid] < nums[right],那就是[mid, right]有序,如果nums[mid] <

2020-06-14 18:34:28 299

原创 数据结构与算法——小小数组也不简单

一、下个排列此题为leetcode第31题思路:如果希望下个数比现在的大,那么可以将后面的某个大数与前面的某个小数交换,就可以得到一个比现在大的数。并且由于是字典序中的下个数,那么这两个数的增幅还要最小。比如123564,我们将5和6交换得到123654,但它不是字典序中的下个更大的排列,5和4交换后的123645才是。因此我们可以从数组的最后开始遍历,如果是升序的话就一直往前走。如果遇到非升序的数nums[i],那么从这个升序序列的开头开始遍历,找到第一个比nums[i]小的数nums[j],交换这两

2020-06-13 17:17:58 312

原创 数据结构与算法——小小链表不简单

一、两数相加此题为leetcode第2题思路:链表的头结点是个位,依次往后是十位、百位等,在每位的数相加时可能有进位,我们要预先有个进位flag=0,后续可能为0也可能为1,每次相加时都要加上这个进位。加完后的数可能大于10,如果大于10则flag=1,否则flag=0。然后这个数取余便是这位相加后的结果。同时以此遍历两个链表,一个到结尾时另一个继续遍历。class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -&

2020-06-11 17:59:08 312

原创 leetcode高频题——双指针

一、盛最多水的容器此题为leetcode第11题思路:用两个指针指向数组的头尾,以上面的1、7为例,此时水的容量为min(1, 7) * 8=8。然后考虑移动指针,因为水的容量是由最小的那个数决定的,所以应该移动数小的那个指针,这样后面才有机会得到一个大数,使得水的容量变大。class Solution: def maxArea(self, height: List[int]) -> int: if len(height) < 2: retu

2020-06-09 23:32:08 266

原创 数据结构与算法——万万想不到的位运算

一、出现一次的数字这一系列的题用哈希很容易做出来,但这些题最想考察的是位运算。1、出现一次的数字I此题为leetcode第136题思路:利用异或操作一个数字a和0进行异或操作,得到的是自己:a⨁0=a一个数字和自己进行异或,得到的是0:a⨁a=0异或满足交换律和结合律:a⨁b⨁a=(a⨁a)⨁b=0⨁b=b对所有数字进行异或操作即可得到只出现一次的数。class Solut...

2020-04-24 22:16:21 310

原创 数据结构与算法——优先队列

一、优先队列优先队列按照队列的方式正常入队,但按照优先级出队。有两种实现方式:堆(二插堆、多项式堆等等)和二叉搜索树数据流中的第k大元素leetcode第703题...

2020-04-21 23:27:05 598

原创 数据结构与算法——并查集

一、并查集并查集(Union & find) 是一种树形的数据结构,用于处理一些不交集(Disjoint sets)的合并与查询的问题。初始化时把每个点所在集合初始化为其自身。Find: 确定元素属于哪一个子集,它可以被用来确定两个元素是否属于同一子集。Union: 将两个子集合并成同一个子集。如下图所示,一开始有7个字母,每个都指向自己:根据某种规则,将相关的字母合并起来,即...

2020-04-18 00:46:22 324

原创 数据结构与算法——LRU缓存

一、LRU缓存LRU(least recently used)最近最少使用缓存机制,在计算机的缓存满时,会最先淘汰近期最少使用的数据。示意图如下图所示:设缓存的大小为5,在缓存未满之前,ABCDEF依次进入缓存。当要缓存F时,A近期没有被使用,因此淘汰掉,F放到头的位置,剩下的往后挪。当再次进来C的时候,因为缓存里已经有C了,因此把C提到缓存的头来。再进来G的时候,G放到头,剩下的往后挪。二...

2020-04-15 18:06:19 282

原创 数据结构与算法——字典树

一、字典树字典树(Trie) 又称单词查找树或键树,是一种哈希树的变种。典型的应用是用于统计和排序大量的字符串(但不限于字符串),优点是可以可以最大限度地减少无畏的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询的时间。比如有一个包含多个单词的列表:[‘word’, ‘work’, ‘code’, ‘coffe’],可以下面的字典树表示:word...

2020-04-14 22:49:15 966

原创 数据结构与算法——二分查找

一、二分查找使用二分查找的条件:单调递增或递减存在上下界能够通过索引访问(数组更适合二分查找,链表不适合)程序模板:left, right = 0, len(array)while left <= right: mid = (left + right) // 2 if array[mid] == target: return True elif array[mid...

2020-04-14 18:54:25 290

原创 数据结构与算法——十大排序算法

一、冒泡排序排序过程:列表每两个相邻的数,如果前者大于后者,则交换这两个数;遍历列表,完成一趟排序继续从头遍历,重复上述过程,直到没有发生交换为止def BubbleSort(a): if len(a) == 0: return None for i in range(len(a) - 1): exchange = False...

2020-04-06 23:15:47 317

原创 数据结构与算法——动态规划

一、动态规划1、从斐波那契数列说起斐波那契数列我们比较熟悉了,它的递推公式为f(n)=f(n−1)+f(n−2)f(n)=f(n-1)+f(n-2)f(n)=f(n−1)+f(n−2),它的解法在《数据结构与算法——递归》这一节里也说过了。直接使用递归会造成很多重复计算,它的时间复杂度为O(2N)O(2^N)O(2N);而使用记忆化,即将中间过程缓存起来,可以降到O(N)O(N)O(N)的时间...

2020-03-23 23:20:29 982

原创 数据结构与算法——位运算

一、位运算位运算: 直接对整数在内存中的二进制位进行操作。比如6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果。由于位运算直接在内存数据进行操作,不需要转为十进制,因此速度非常快。常用的逻辑运算符:符号描述运算规则&与两个都为1时,结果才为1|或两个都为 0时,结果才为1^异或...

2020-03-21 23:37:24 661

原创 迁移学习——Domain Adaptation文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新20202019 Yu C, Wang J, Chen Y, et al. Accelerating deep...

2020-03-21 17:52:18 3526

原创 AutoDL——NAS文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新基于强化学习、进化算法 Zoph B, Le Q V. Neural architecture search w...

2020-03-20 22:30:46 2474

原创 PHM——普通神经网络与无监督方法文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新2020 Zhou F, Yang S, Fujita H, et al. Deep learning faul...

2020-03-20 21:49:35 1611

原创 数据结构与算法——哈希

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新一、哈希表哈希表是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。...

2020-03-20 18:49:19 641

原创 迁移学习——理论分析文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新20202018 Wang Z . Theoretical Guarantees of Transfer Le...

2020-03-19 23:10:31 702

原创 迁移学习——综述文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新20202019 Zhang L. Transfer adaptation learning: A decad...

2020-03-19 22:49:54 1349

原创 PHM——综述文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新2020 Deep Learning Algorithms for Bearing Fault Diagnost...

2020-03-19 22:39:35 1953

原创 数据结构与算法——递归

一、递归递归:在定义一个过程或函数时,出现本过程或本函数的成分称为递归。递归条件:可以用递归解决的问题应该满足以下三个条件:这个问题可以转化为一个或多个子问题来求解,而且这些子问题的求解方法与原问题完全相同递归调用的次数是有限的必须有终止条件递归的底层原理: 函数调用操作包括从一块代码到另一块代码之间的双向数据传递和执行控制转移,大多数CPU使用栈来支持函数调用。单个函数调用操作所...

2020-03-18 23:32:56 1281

原创 AutoDL——综述文献

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新20202019 Elsken T , Metzen J H , Hutter F . Neural Arch...

2020-03-15 22:35:12 561 2

原创 AutoDL——自动数据增强

人工智能文献记录专栏,专栏地址:https://blog.csdn.net/u014157632/category_9760481.html,总目录:https://blog.csdn.net/u014157632/article/details/104578738。不定期更新20202019 Cubuk E D , Zoph B , Mane D , et al. AutoAugme...

2020-03-15 22:27:07 1294

原创 数据结构与算法——广度与深度优先搜索

一、栈栈(stack)是一个数据集合,只能在一端进行插入和删除,其特点是后进先出(LIFO,lats-in-first-out)。栈的节本操作有进栈(push)、出栈(pop)、取栈顶(gettop)。其示意图如下所示: 图1:队列 对于python来说,使用列表即可实现栈。设列表为stack,其三个基本操作为:入栈:stack.append()出栈:stack.pop...

2020-03-15 21:38:26 1051

原创 数据结构与算法——队列与栈

一、队列队列(Queue)是一个数据集合,仅允许在列表的一端插入,在另一端删除。进行插入的一端称为“队尾”(rear),插入的动作称为入队;进行删除的一端称为“队头”(front),删除的动作称为出队。队列的性质是先进先出(FIFO,First-in-First-out)。下图为一个例子: 图1:队列 队列的实现方式:环形队列设队列的最大长度为maxsize,队头指针为f...

2020-03-15 21:13:32 353

原创 数据结构与算法——平衡二叉树

一、平衡二叉树什么是平衡二叉树: 每个节点的两个子树的高度不会相差超过1。普通树和平衡二叉树的对比:为什么要用到平衡二叉树: 在二叉搜索树里面,搜索操作的时间复杂度从O(logN)O(logN)O(logN)到O(N)O(N)O(N)不等,这是一个巨大的性能差异。而平衡的二叉搜索树的搜索复杂度为O(logN)O(logN)O(logN)。常见的平衡二叉树的实现: 红黑树、AVL树、伸展树、...

2020-03-14 19:21:50 363

原创 数据结构与算法——二叉搜索树

一、二叉搜索树二叉搜索树(BST)满足的性质:每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值。每个节点中的值必须小于(或等于)存储在其右子树中的任何值。一个二叉搜索树的例子如下所示: 图1:二叉搜索树举例 因为二叉树的中序遍历会得到一个递增的序列,因此在二叉搜索树里中序遍历比较常用。给定一个二叉树,我们要判断它是否是二叉搜索树。二叉搜索树的特征比较明显...

2020-03-13 22:11:15 5114

原创 数据结构与算法——二叉树

一、二叉树二叉树是一种更为典型的树树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。下面是个二叉树的例子:用python定义二叉树的节点:# 二叉树节点class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = ...

2020-03-11 22:37:46 394

workshop_of_NAS_ICLR2020.rar

ICLR 2020 线上会议已经圆满结束。此次会议关于NAS的研究主题包括对benchmark的探讨、对于流行的NAS方法的理解和分析,以及如何提高NAS方法的精度和效率等。值得一提的是,此届会议举办了ICLR历史上的第一个神经网络架构搜索(NAS)的Workshop(https://sites.google.com/view/nas2020/home),充分体现出NAS正成为越来越热门的神经网络研究方向。

2020-05-19

十大排序算法.ipynb

冒泡排序、插入排序、选择排序、快速排序、堆排序、归并排序、希尔排序、计数排序、桶排序、基数排序,python实现

2020-04-10

汉口长江每月流量数据

该数据记录了从1865年1月到1978年12月在汉口记录的长江每月流量,共计1368个数据点,计量单位未知。

2017-12-14

deeplearning.ai第二门课——权重初始化

deeplearning.ai第二门课《提升深层神经网络》,权重初始化部分的编程作业,包括一个py文件,数据文件和一个jupyter-notebook

2017-10-11

deeplearning.ai

deeplearning.ai第二门课《提升深层神经网络》,正则化部分的编程作业,包括一个py文件,数据文件和一个jupyter-notebook

2017-10-10

mnist手写识别代码

mnist手写识别代码

2017-02-17

Deep Learning Tutorial李宏毅ppt

2017-02-17

数字滤波C语言

递推平均数字滤波,C语言实现,可输出文本文档

2015-12-06

空空如也

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

TA关注的人

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