常用数据结构模式 概述解决算法问题的常用数据结构:基础数据类型数组与字符串链表堆栈二叉树堆哈希表1. 基础数据类型一个典型问题:给定一个整数x,计算它的二进制形式中含有多少个12. 数组与字符串数组算法题大多涉及排序。涉及字符串的题目也很常见,如将字符串反转、判断字符串是否是回文等。3. 链表有关链表的算法题大多涉及链表的操作和结构判断。如将链表倒转、判断链表是否含有环等。相比于数组,链表的优势在于元素的插入和删除很高效,算法复杂度都是O(1),而数组的复杂度是O(n);但是链表在获取某
算法的设计模式 概述分析方法总结:排序递归分而治之动态规划贪婪算法排除法逐步改进1. 排序遇到数组问题,第一反应就是先排序2. 递归当一个大问题能够分解成多个结构相同的子问题时,使用递归处理3. 分而治之把问题分解成若干个规模更小的子问题。如果子问题容易解决,那么解决子问题后,把所有结果整合起来便形成原有问题的解。归并排序是典型的分而治之策略。4. 动态规划动态规划主要用来处理最优化问题,当题目中出现类似“成本最少”,“路径最短”等表示求极值的意思时,就必须要考虑动态规划。5. 贪婪
二叉搜索树节点最小距离 题目:给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。示例 1:输入:root = [4,2,6,1,3]输出:1示例 2:输入:root = [1,0,48,null,null,12,49]输出:1需要考虑到的测试用例:功能测试:如 [4, 2, 6, 1, 3]特殊输入测试:如树中只有单个节点、两个节点性能测试:如树的节点个数较大分析:需要搜索到二叉树中所有节点元素,最小差值一定出现在数值差距最小的两个元素之间,因此可以把所有元素进行
删除中间节点 题目:实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f应考虑到的测试用例:功能测试:如单项链表 [1,2,3,4,5,6,7],输入 3;特殊输入测试: 链表为空;单项链表 [1,2,3,4,5,6,7],输入 6 或 7,即节点为倒数第一二个节点;性能测试:分析
一维数组的动态和 题目给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]
丑数 题目描述:给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和 / 或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数。需要考虑到的测试用例:功能测试: 输入 2、 3、 4、 5、 6 等;特殊输入测试: 边界值1、无效输入0性能测试:输入较大的数字,如 1500解
基于自相关的基音周期估计(Pitch Detection) 基音周期估计的现有方法到目前为止,基音检测的方法大致上可以分为三类:1)时域估计法,直接由语音波形来估计基音周期,常见的有:自相关法、并行处理法、平均幅度差法、数据减少法等;2)变换法,它是一种将语音信号变换到频域或者时域来估计基音周期的方法,首先利用同态分析方法将声道的影响消除,得到属于激励部分的信息,然后求取基音周期,最常用的就是倒谱法,这种方法的缺点就是算法比较复杂,但是基音估计的效果却很好;3)混合法,先提取信号声道模型参数,然后利用它对信号进行滤波,得到音源序列,最后再利用自相关法或者平均
机器学习算法(二): 朴素贝叶斯(Naive Bayes) 1. 实验室介绍1.1 实验环境python3.7numpy >= ‘1.16.4’sklearn >= ‘0.23.1’1.2 朴素贝叶斯的介绍朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一。它是基于贝叶斯定义和特征条件独立假设的分类器方法。由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数学基础,以及稳定的分类效率。NB模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。当年的垃圾邮件分类都是基于朴素贝叶斯分类器识别的。什么是条件概
机器学习算法(一): 基于逻辑回归的分类预测 1 逻辑回归的介绍和应用1.1 逻辑回归的介绍逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。而对于逻辑回归而且,最为突出的两点就是其模型简单和模型的可解释性强。逻辑回归模型的优劣势:优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低;缺点:容易欠拟合,分类精度可能不高1.1
Paddlehub实现图像分割 PaddleHub可以便捷地获取PaddlePaddle生态下的预训练模型,完成模型的管理和一键预测。配合使用Fine-tune API,可以基于大规模预训练模型快速完成迁移学习,让预训练模型能更好地服务于用户特定场景的应用。模型概述:模型概述 DeepLabv3+ 是Google DeepLab语义分割系列网络的最新作,其前作有 DeepLabv1,DeepLabv2, DeepLabv3。在最新作中,作者通过encoder-decoder进行多尺度信息的融合,同时保留了原来的空洞卷积和ASSP层,
TensorFlow Seq2Seq模型样例:中英文翻译 训练中途周末被人强制断电,仅保存了训练到一半的模型,用来做一波测试,效果好于预期,当然,现在还是个智障。预测代码如下,注释已经很详尽了,做个备注,用于学习。# coding: utf-8"""@ File: Seq2Seq_inference.py@ Brief: 翻译模型预测程序,使用训练完成的 checkpoint 数据"""import tensorflow as tfimport codecsimport sys# 设置参数# 读取 checkpoint 的路径,9000 表
PaddlePaddle入门学习——波士顿房价预测模型 PaddlePaddle基础命令PaddlePaddle是百度开源的深度学习框架,类似的深度学习框架还有谷歌的Tensorflow、Facebook的Pytorch等,在入门深度学习时,学会并使用一门常见的框架,可以让学习效率大大提升。在PaddlePaddle中,计算的对象是张量,我们可以先使用PaddlePaddle来计算一个[[1, 1], [1, 1]] * [[1, 1], [1, 1]]。计算常量的加法:1+1首先导入PaddlePaddle库import paddle.fluid as
《深度学习》推导与代码实现(六):信息论 p = np.linspace(1e-6, 1-1e-6, 100)entropy = (p - 1) * np.log(1 - p) - p * np.log(p)plt.figure(figsize=(4,4))plt.plot(p, entropy)plt.xlabel('p')plt.ylabel('Shannon entropy om nats')plt.show()import mathdef H(sentence): """ 最优编码长度 """..
《深度学习》推导与代码实现(五):概率 import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-10, 10, 100)sigmoid = 1 / (1 + np.exp(-x))softplus = np.log(1 + np.exp(x))fig, axes = plt.subplots(1, 2, figsize=(10, 3))axes[0].plot(x, sigmoid, label='sigmoid')axes[1].plot(x, sof.
TensorFlow Seq2Seq模型样例:实现语言翻译 没舍得用自己的电脑跑,训练用的机器比较垃圾,没有 GPU,很闹心,其间不同 IDE 调用了一次环境想用来测试一下中途训练效果,导致跑了两天的训练被打断,血的教训,不要再犯第二次。本次训练是用来 TED 的英语-中文翻译数据集,进行了相关的前处理,做了模型持久化,会隔一定 step 自动保存一次模型和训练结果。被打断时训练到 6200 步,输出的模型能够把句子说成人话了,虽然翻译准确性还比较差,预计 9000 步左右能稍好些吧。Seq2Seq 模型原理和训练结果待后续补充,在此先记录一下代码,若有感兴趣的
《深度学习》推导与代码实现(四):概率 import numpy as np import matplotlib.pyplot as pltfrom scipy.stats import uniform%matplotlib inline# 生成样本fig, ax = plt.subplots(1,1)r = uniform.rvs(loc=0, scale=1, size=1000)ax.hist(r, density=True, histtype='stepfilled', alpha=0.5)# 均匀分布 pdfx =.