- 博客(42)
- 收藏
- 关注
原创 latex
2020.07.02记录姜姜同学被word的公式编辑器逼疯然后迫不得已来此地编写latex公式2020.07.02\\记录姜姜同学被word的公式编辑器逼疯\\然后迫不得已来此地编写latex公式\\2020.07.02记录姜姜同学被word的公式编辑器逼疯然后迫不得已来此地编写latex公式A=[0100000100000111000010010]A = \left[ \begin{matrix} 0 & 1 & 0 & 0 & 0 \\ 0
2020-07-03 11:04:22 199 1
原创 LeetCode 检查树的平衡性
class Solution {public: bool isBalanced(TreeNode* root) { //递归检查树的平衡性 if(!root) return true; int dep1 = depth(root->left, 0); int dep2 = depth(root->right, 0); if(abs(dep1 - dep2) > 1) return false; ..
2020-05-25 14:01:38 211
原创 20200414
Today, 还好!距离上次写博客记录一下自己的心情已经过去两周了,时间过得好快啊!回顾一下这两周,感觉过的还不算太颓废现在跑步时间改变了,每天晚上跑步,回来洗澡,很舒服终于刷完了深度学习的卷积神经网络部分,目前不打算再深入了。(考研之后再说吧,炼丹还是很有意思的,Ng明年见)参加了华为软挑,把藏了一年有余的cpp拿出来了,花了一天的时间与它亲密相处之后,写出来了一个垃圾的代码提交了上...
2020-04-14 17:43:50 205
原创 20200331
Today, a terrible day!今天真的是糟糕的一天。早晨起得很早,跑了步,感觉浑身充满了活力。恰逢一天没课,便做了一个今日计划,大概是下面这个样子的8:00 - 11:00 学习最优化,写完习题11:00 - 12:00 看Ng的深度学习视频,结束深度学习第三课12:00 - 14:00 午餐 + 洗澡 + 午觉14:00 - 18:00 复习微分几何,准备期中考...
2020-03-31 22:04:42 261
原创 并查集
并查集的简单实现f = {}def find(x): f.setdefault(x, x) if f[x] != x: f[x] = find(f[x]) return f[x]def union(x, y): f[find(y)] = f[find(x)]
2020-03-31 21:50:10 133
原创 Pytorch基本训练
1、dataframe转化成numpy数组data = np.array(df.iloc[:100, :])2、numpy数据格式转化由于torch进行训练时需要数据类型为torch.float32,所以需要对numpy进行格式转化X = np.linspace(-2, 2, 200).astype(np.float32)np.random.shuffle(X) #numpy打乱数据...
2020-03-19 23:25:14 714
原创 keras基本训练及注意事项
keras训练步骤from keras.layers import Dense #导入层from keras.models import Sequential model = Sequential()model.add(Dense(1, input_shape = (1, ))) #input_shape = (特征的维度,)model.compile(loss = "mse",...
2020-03-19 22:22:16 237
原创 pandas索引、数据修改和绘图
1、修改pandas数据#示例 : 对df的vine这一列数据进行操作,将value值为N的转化成0,其余的转化成1df["vine"] = df["vine"].apply(lambda x : 0 if x == "N" else 1)将某一行的数据俺条件修改,lambda可以自己定义函数进行更加复杂的操作2、学习使用时间戳#示例 : 将df的review_date这一列的字符串转...
2020-03-10 12:09:04 715
原创 keras中model.fit输出问题
model.fit()进行训练时,每次输出都很乱,两个loss两个accuracy。但是修改了verbose的值之后只打印一行好看一点。但是搞不懂乱的原因是什么
2020-03-08 17:31:10 3953 1
原创 LeetCode 24.两两交换链表中的节点
LeetCode 24.两两交换链表中的节点题目描述思路求解这个题目看起来没有什么困难的(实际上也没有什么困难的2333),但是有一点也需要注意一下吧在进行节点交换的过程中,注意不要仅交换其中的两个节点,还有考虑前面的节点,不然即使交换了,前面的节点没有指向交换后的节点也无济于事详细的思路看代码吧代码求解class Solution: def swapPairs(self,...
2019-10-28 13:31:52 135
原创 LeetCode 101.对称二叉树
LeetCode 101.对称二叉树题目描述思路求解这个题目在LeetCode里面属于简单类型的题目(但是我做了挺久!)主要思路是广度优先搜索,不过要对其进行一点改进试想,我们先回忆一下二叉树的广度优先搜索算法。首先创建一个队列,将根节点加入进去,然后创建一个循环,只要队列不为空,我们的循环就一直进行。循环体内部:队列出一个元素,然后访问该元素,如果其存在左子节点,加入队列,如果其存...
2019-10-25 13:37:28 158
原创 LeetCode 264.丑数
LeetCode 264.丑数在做这个题目之前我们先自己造个轮子——实现一个堆维护堆的性质def max_heapify(A,i): left = 2*i+1 right = 2*i+2 max = i if left < len(A) and A[left]> A[i]: max = left if right < ...
2019-10-23 13:42:10 98
原创 LeetCode 240.搜索二维矩阵
LeetCode 240.搜索二维矩阵题目描述思路求解从右上角开始搜索,如果target大于当前值,则向下移动一步,小于当前值则向左移动一步。复杂度O(m+n)代码求解class Solution: def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]]...
2019-10-19 23:14:58 157
原创 LeetCode 169.求众数
LeetCode 169.求众数题目描述思路求解1、第一种思路很简单,直接对数组中的元素进行排序。因为众数的个数超过了半数,所以我们取排好序的数组的中间的元素一定是众数2、第二种思路是将数组中的元素进行一一抵消,懵逼没关系,听我继续讲。首先我们选取数组中任意的两个元素,如果它们不等,则删去,相等则继续。直到数组中所剩的元素全是相同的,那么所剩元素一定是众数还是,因为众数的个数超过了...
2019-10-17 13:56:56 176
原创 LeetCode 122.买卖股票的最佳时机(二)
LeetCode 122.买卖股票的最佳时机(二)难度 :简单题目描述思路求解在这个规则之下,股票买卖的最大收益计算更为简单了我们只需要设置一个 profit 保存当前的收益;设置一个 Now 表示当前所持的股票遵循一个原则 :只要涨,咱就卖ps:当初曾幻想靠这个能成为百万富翁,啊哈哈哈哈代码求解class Solution: def maxProfit(self, p...
2019-10-15 14:12:28 143
原创 LeetCode 121.买卖股票的最佳时机(一)
LeetCode 121.买卖股票的最佳时机(一)难度:简单题目描述思路求解动态规划法求解,初始化一个表,保存每一天股票的涨跌,设为diff其中diff[i] 表示第 i 天的股票与第 i-1 天的股票差价初始化动态规划中保留子问题所用的表,设为dp其中,dp[i] = max( 0, dp[i-1] + diff[i] )然后记录最大的dp[i]解释一下上面的最优子结构公式啊...
2019-10-15 14:01:33 131
原创 LeetCode 53.最大子序列
LeetCode 53.最大子序列难度:简单题目描述思路求解又是一道动态规划的题目,初始化一个数组 P 用来保存子序列的当前子序列的最大连续子数组if p [i-1] > 0 : p[i] = p[i-1] + nums[i]else : p[i] nums[i]自顶而上,求出整个数组的最大子序列代码实现class Solution: def maxSubArra...
2019-10-14 23:07:59 115
原创 LeetCode 70.爬楼梯
LeetCode 70.爬楼梯难度 :简单题目描述思路求解这个题目可以用动态规划来做,第 i 阶可以由以下两种方法得到:在第(i−1) 阶后向上爬一阶或在第(i−2) 阶后向上爬两阶。所以到达第 ii 阶的方法总数就是到第 (i-1)(i−1) 阶和第 (i-2)(i−2) 阶的方法数之和。令 dp[i] 表示能到达第 i 阶的方法总数:代码实现class Solution:...
2019-10-14 13:30:54 138
原创 LeetCode 4.寻找两个有序数组的中位数
LeetCode 4.寻找两个有序数组的中位数题目难度 : 困难题目描述思路求解看到题目要求的复杂度是对数级,第一时间想到的是二分法,但是仔细看了一下题目感觉并不是很容易实现后来,我尝试 合并数组,重新排序,求中位数这种违规操作,竟然AC了。。。今天又回到了二分法,每次从两个数组某一个的首尾各去掉一个元素,知道两个数组的元素总数小于等于二,停止取平均看代码吧,主要是循环条件,没什么...
2019-10-14 00:20:45 170
原创 LeetCode 11.盛最多水的容器
LeetCode 11.盛最多水的容器难度:中等为何今天没有刷第十题,而是刷了第十一题呢?好吧,第十题我没做出来,另外下午有个考试,现在没办法拿太多时间想第十题,不过小伙伴们可以自己尝试一下哦。题目描述题目求解双指针法:从左右两边逼近,中间不断更新最大容量哈哈哈哈,今天写的好水,理解一下啦,复习去啦,不懂再问我代码实现class Solution: def maxAre...
2019-10-12 13:22:31 122
原创 LeetCode 9.回文数
LeetCode 9.回文数题目描述思路求解很基础的一个题,基本上会变成的人都能写出来,说两个思路吧小白解法 :先判断是否小于零,小于零则返回False大于0则将其转换成字符串比较字符串倒置和原字符串是否相同大白解法:判断是否小于0,或者是不是10的倍数设置half ,对x取余,然后x整除10,直到x<=half判断x是否等于half,或者half整除10是否等...
2019-10-11 13:10:24 132
原创 LeetCode 8.字符串转换整数
LeetCode 8.字符串转换整数题目描述思路求解没什么价值的一道题目求解方法大概就是分析里面的各种条件吧,几个判断就ok了当然有大佬用了正则匹配具体的看代码吧代码实现class Solution: def myAtoi(self, str: str) -> int: if str == "":return 0 strnum = ...
2019-10-10 13:38:51 111
原创 LeetCode 7.整数反转
LeetCode 7.整数反转题目描述思路求解这个题目较为简单,我的做法是先判断输入的数是否大于0,如果小于0,则取绝对值,然后再反转反转方法:将整数转换成字符串,对字符串反转,这个不用多说了吧,python反转个字符串超级简单的。这里有个坑,经过反转后的值可能会超过整型的范围,所以我们需要判断一下反转之后的值,如果溢出则返回0代码实现class Solution: def...
2019-10-09 13:57:53 127
原创 LeetCode 6.Z字符变换
LeetCode 6.Z字符变换题目描述题目分析对于这个题目,我们不必先急着写代码,先仔细分析一下这个Z字符Z字符可以分解成一个又一个的“Z”,但是这并不利于我们求解,仔细分析我们可以将Z字符再拆分,定义单位结构如下所示可以看到这个结构中,第一行和最后一行出现的字符数量为1,其余为2且该单位结构元素的数量为 2*行数-2程序设计思路设行数为NumRows初始化NumRows...
2019-10-08 14:16:08 148
原创 LeetCode 5.最长回文子串
LeetCode 5.最长回文子串题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。动态规划求解法动态规划法的思路是将问题分解成一个一个的小问题,然后进行求解来得到原问题的解,所以在示例字符串 “abba” 中,我们知道 “bb”这个子串是回文子串,那么我们只需要判断这个字串两边的一个字符就能判断一个更大的子串是否为回文子串。基于上面的思...
2019-10-07 23:47:02 155
原创 深度优先查找与广度优先查找
深度优先查找和广度优先查找的查找与遍历图的两种非常重要的算法,它们也可以看作是减治技术的应用。为方便部分读者对本节内容的掌握,我们先和大家一起学习和熟悉一些图问题中的概念。图严格来说一个图G=<V,E>有两个集合来定义。一个集合V,它的元素称为顶点;另一个集合E,它的元素是一对顶点,称为边。如果每对顶点之间都没有顺序,也就是顶点对(u,v)等价于(v,u),则称u和v相互邻接,...
2019-10-05 00:15:52 472
原创 插入排序
插入排序原理在此我们考虑使用减(一)治技术来对一组数A[0,n-1]进行插入排序,可分为直接插入排序和折半插入排序。我们假设已经对数组中的n-1个数排好序,接下来则考虑如何将A[n-1]这个数放到已经排好序的n-1个数里,使得我们成功对n个数完成排序。直接插入排序和折半插入排序都可做到。前者有两种做法:一是从左到右扫描,直到找到第一个大于等于A[n-1]的元素A[i],然后将A[n-1]放到A...
2019-10-05 00:11:41 103
原创 二叉树的遍历
二叉树的遍历二叉树的遍历也是分治策略的一种思想,今天我们讲一下二叉树的三种递归遍历方法。在介绍二叉树的遍历之前我们先来聊一下什么是二叉树吧。所谓二叉树,其实就是若干点的有限集合。它和链表队列这些结构不同,树是一种非线性的结构,而二叉树则是树的一种特殊情形,是一种更简单而且应用更加广泛的树。二叉树常被用于实现二叉查找树和二叉堆。二叉树的python简单实现:class TreeNode:...
2019-10-05 00:09:13 100
原创 二分查找
二分查找对于有序数组来说,折半查找的效率很高,它的工作方式主要是通过查找键值K和数组中间元素A[m]来完成的。如果相等,查找结束。否则,K<A[m],就对数组的前半部分进行查找,否则对数组的后半部分进行查找。我们可以进行一个计算,检验一下折半查找的效率。对于一个有100万元素的有序数组查找一个值,所需要的次数不会超过20次,足以说明这个算法的优秀性能。python实现def sear...
2019-10-05 00:06:04 73
原创 快速排序
快速排序快速排序不同于归并排序的按元素在数组中的位置对数组进行划分,而是按照元素的值对其进行划分。具体来说,快速排序的思想主要是对数组中的元素进行重新排列,来得到一个快速排序的分区。在得到的分区中,所有s下标之前的元素都小于等于A[s],之后的元素都大于等于A[s]。如何建立分区呢?首先我们应该选定一个中轴,在中轴左边的元素小于等于中轴元素,之后大于等于中轴元素。我们首先将第一个元素作为中轴...
2019-10-05 00:04:10 79
原创 BP神经网络的python实现
人工神经网络人工神经网络是由大量的最简单的基本元件——神经元相互连接,通过模拟人脑的大脑处理信息的方式,进行信息并行处理和非线性转换的复杂网络系统。其优点是多输入多输出实现了数据的并行处理以及自学能力。神经网络的拓扑结构包括网络层数、各层神经元的数量以及各神经元之间相互连接的方式。常用的激励函数如果数据进行映射处理,比如 100,在激活函数上基本上是直线段,很难降低误差,就算是用优化算...
2019-10-03 15:34:51 988
原创 模拟退火算法
模拟退火算法——脱胎于自然界物理过程,与优化问题相结合模拟退火算法工程中许多实际优化问题都是非凸的,存在许多局部最优解,特别是随着优化规模的增大,局部最优解的数目将会迅速增加。因此,有效地求一般的随机优化问题的解至今仍是一个难题。目前求解一全局最优化问题的方法一般分为两类,一类是确定性方法,另一类是随机性方法。模拟退火算法是一种通用的概率算法,用来在一个很大的空间内寻找问题的最优解。由于其能...
2019-10-03 15:25:21 526
原创 粒子群算法
粒子群算法现代算法分为硬计算和软计算,这个概念是由美国加州大学的一名教授提出的。硬计算需要建立数学模型,软计算是一种动态的自适应求解方式,不需要建立深入的数学模型。智能算法都属于软计算。自然界中的一些生物行为特征呈现群体特征,可以用简单的几条规格将这些群体的行为在计算机中建模,实际上就是在计算机中用简单的几条规则建立个体的运动模型。例如使用下面三条简单的规则来约束一个群体:避免冲突:群体在...
2019-10-03 15:19:41 778
原创 遗传算法
遗传算法智能算法简介智能算法是智能技术领域的一个分支。智能算法出现的原因是,人们在知识新陈代谢速度快和知识繁杂的社会里,需要用高效的数据挖掘工具从各类数据中提取有用的信息和知识,以便于提高生产效率降低生产成本。以前这些工作都是人来操作的,但后来出现了一些模仿人脑力劳动的的算法出现减少了人类的工作量,这些算法被称为智能算法,智能算法都有一个显著的特征——机械性。常用的智能算法有遗传算法、粒子群算...
2019-10-03 15:13:16 3013
原创 数据结构篇——图
图虽然树很灵活,并且有很多不同的应用,但是树本身存在局限,树只能表示层次关系。图是树的推广,在这一数据结构中不存在那么多的限制。图是由节点和顶点间的关系组成的集合。图是一种多用途的数据结构,可以表示多种情况。简单的图G = (V,E)由非空顶点集V和边集合E组成。每条边都是V中两个定点的集合。顶点和边的数量分别用 |V| 和 |E| 表示。无向图中,边的形式为{Vij,Vji},且{Vji,V...
2019-10-03 14:53:40 315 2
原创 数据结构之二叉树
树我们已经学了三个结构了,链表、栈、队列,但是它们都是线性结构,很难使用它们组织对象的分层表示。为了避免这种限制,我们创建了树这个结构。树由节点和弧组成,与自然界的树不同的是,我们所说的树是倒着的:根在上,叶子结点在下。根没有父节点只有子节点,叶节点没有子节点或者子节点是空结构。在一棵树中,每个节点都可以经都可以从根节点经一个唯一的弧序列到达,此弧序列被称为路径,路径中弧的数量称为路径的长度...
2019-10-03 14:47:50 124
原创 归并排序
分治策略分治算法应该算是目前最著名的算法设计技术了,很多高效的算法都是分治法或分治法的稍加改进。分治法可以通俗的解释为:把一片领土分解,分解为若干块小部分,然后一块块地占领征服,被分解的可以是不同的政治派别或是其他什么,然后让他们彼此异化。分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法所能解决的问题一般具有以下几个特征:该问...
2019-10-03 00:38:59 88
原创 选择排序与冒泡排序
选择排序与冒泡排序选择排序和冒泡排序属于很简单的排序算法,目前人们已经开发出了许多优秀的排序算法,但冒泡排序和选择排序这些基础的排序算法仍需要我们掌握。另外,选择排序和冒泡排序也是蛮力算法的代表算法。冒泡排序冒泡排序相比大家在学习C语言的过程中都有学习过,它的主要思想是比较相邻元素的值,如果前面的值比后面的值大,就交换这两个元素的值,然后依次向后进行比较。这样对于一个n维数组,在进行完n-1...
2019-10-03 00:32:41 138
原创 渐进符号与基本效率类型
渐进符号与基本效率类型效率分析框架主要是关心算法的基本操作次数的增长次数,并且将它们作为算法效率的主要指标。这一篇文章我们使用符号对这些增长次数进行分类。O(g(n)) 是指增长次数小于等于g(n)(以及其常数倍,n趋向于无穷大)的函数集合。Ω(g(n)),代表增长次数大于等于g(n)(以及其常数倍,n趋向于无穷大)时的函数集合。θ(g(n)) ,增长次数等于g(n)(以及其常数倍,n...
2019-10-03 00:25:12 1701
原创 数据结构之队列
队列队列也是线性的结构,是一个简单的等待序列。尾部加入元素时队列加长,在前面删除数据时队列变短。与栈不同之处在于,队列两端都会用到,但是两端的功能不同,一端用来添加数据另一端用来删除元素。像排队一样,来的人只能排在队伍的最后面,只有前面的人都走了,才轮到这个人。因此,队列是先进先出的结构。队列的操作与栈相似,队列包含以下操作:Clear()——清空队列IsEmpty()——判断队列是否为...
2019-10-02 16:36:22 165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人