- 博客(20)
- 收藏
- 关注
原创 leetcode 并查集UnionFind(547.朋友圈)
题目描述 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。 样例 输入: [[1,1,0], [1,1,0], [0,0,1]] 输出:2 解释:已知学生 0 和学生
2020-10-11 11:26:27
290
原创 剑指offer 20 表示数值的字符串
题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。 解题思路: 其实也不算啥解题思路,只是把能出现的所有不合法的情况排除掉,就是正确答案了 首先要出去前后的空格符 判断第0位是否为符号位,如果是,则记录已经有了符号位,然后去除符号位 科学计数法‘e’,‘E’只能出现一个,用has_e记录是否有
2020-10-02 12:03:08
164
1
原创 剑指offer 11 旋转数组的最小数字
参考link 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 输入 [3,4,5,1,2] 输出 1 输入 [2,2,2,0,1] 输出 0 寻找旋转数组(左排序数组任一元素 >=右排序数组任一元素)的最小元素,即为寻找右排序数组的首个元素nums[x],称x为旋转点。 考虑使用二分法解决。 算法流程 1、初始化: 声明
2020-09-22 10:32:02
119
原创 剑指offer 合并k个链表
合并 k 个已排序的链表并将其作为一个已排序的链表返回。 最古老的方法,依次遍历数组里的链表合并再放回数组里,面试这么写必死无疑。 解题思路: 方法一:分治递归法 用二分法把列表进行拆分成2个2个一组,然后合并每一组链表后再重复操作。 时间复杂度是log(k)*n,n是单个链表的长度。 class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def
2020-09-11 12:14:36
234
原创 剑指offer 二叉树最大路径和
给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。 这个路径的开始节点和结束节点可以是二叉树中的任意节点,不是根结点到叶节点,可以使叶节点到叶节点,也可以使中间节点。 解题思路: 首先考虑清楚两件事情: 1、节点的值可能是非负的,因此开始的结点不一定是根结点,结束的结点也不一定是叶子结点。 2、题目没有说是要按照自顶向下顺序遍历,因此可能最大路径和是root.left>root>root.right。这就需要找到左子树最大值,右子树最大值在加上根的值。所以对每一个结点都要比较:左子树
2020-09-11 11:27:27
191
原创 剑指offer 滑动窗口(单调队列)
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,
2020-09-07 15:52:59
102
原创 剑指offer 链表
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 题解: 给两个指针,从头开始,p1一次走一步,p2一次走两步,直到p1和p2第一次相遇。(当两个指针都进入环之后,两个指针都在环里转圈圈,由于一个走得快一个走得慢,两个指针必然相遇。并且相遇的点到环入口的路程等于链表头结点到环入口的路程。)然后让一个指针p1从头结点开始走,另一个指针p2从相遇点开始走,两个指针每次都是只走一步,直到两个指针相遇。相遇的点就是链表的环的入口结点。 扩展:求出环的长度。 找到链表环的入口,让一个指针p
2020-09-06 14:23:05
129
原创 剑指offer正则表达式匹配
请实现一个函数用来匹配包括“.”和“*”的正则表达式。 模式中的字符“.”示任意一个字符,而“*”表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配 动态规划法 源字符串s,模式字符串pattern 一、首先判断源字符串和模式字符串的长度,分别为n和m 如果源字符串s和模式字符串pattern长度都为0,说明匹配,返回True 如果源字符串s长度不为0但是模式字
2020-09-05 19:47:23
233
原创 背包问题:01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包问题
1、01背包问题 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。输出选了哪些物品。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。 题解 一、dp矩阵,横轴代表背包的容量,从0开始到V。纵轴代表物品数量,0代表前0个物品,1代表前1个物
2020-07-26 23:07:58
466
原创 OpenCV之pycharm没有提示不能自动补全解决方法
OpenCV安装 Python的terminal用pip语句安装 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 后面是国内镜像清华源,安装速度快很多 安装后发现可以import但是却没有提示自动补全 查了好多博客说是要改init文件又要加环境变量等 都试过了还是不行 然后搜了不知多少博客之后终于解决了,遂...
2020-03-28 19:28:11
1299
原创 loss function 损失函数
引入:机器学习中的precision和recall GT\pred positve negative positive true positive false negative negative false positive true negative precision=TPTP+FPprecision = \frac{TP}{TP + FP}precision=TP+F...
2020-03-15 12:35:46
339
原创 数字图像处理第2章
线性操作与非线性操作 考虑一般的算子H,概算自对于给定的输入图像f(x,y)f(x,y)f(x,y)产生衣服输出图像g(x,y)g(x,y)g(x,y):H[f(x,y)]=g(x,y)H[f(x,y)]=g(x,y)H[f(x,y)]=g(x,y) 如果G[aifi(x,y)+ajfj(x,y)]=aiH[fi(x,y)]+ajH[fj(x.,y)]=aigi(x,y)+ajgj(x,y)G[a...
2020-03-13 21:43:18
312
原创 统计学习方法第10章隐马尔可夫模型
隐马尔可夫模型为生成模型。 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链(状态序列)随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生的观测随机系列(观测序列)。序列的每一个位置可看作是一个时刻。 隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。 设Q是所有可能得状态集合,V是所有可能得观测的集合。 Q={q1,q2,…,qN},V={v!,v2,...
2020-03-11 22:56:32
189
原创 统计学习方法第9章EM算法
EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。 EM算法每次迭代由两步组成:E步,求期望,M步,求极大。称为期望极大算法(expectation maximization) 观测数据为Y=(Y,Y2,…,Yn)TY=(Y_,Y_2,\dots,Y_n)^TY=(Y,Y2,…,Yn)T,不可观测数据为Z=(Z1,Z2,…,Zn)TZ=(Z_1,Z_2,\...
2020-03-09 13:15:32
205
原创 统计学习方法第7章支持向量机
支持向量机SVM是一种二分类模型。 支持向量机的学习策略就是间隔最大化,可形式化为求解一个凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。 函数间隔与几何间隔 一个点距离分离超平面w∗x+b=0w*x+b=0w∗x+b=0的远近|wx+b|可以表示分类预测{+1,-1}的确信程度。而wx+b的符号与类别标记y的符号是否一致能够表示分类是否正确。所以可用量y(w*x+b)来表示分类的正确...
2020-03-04 13:27:26
320
原创 统计学习方法第6章逻辑斯蒂回归
逻辑斯蒂回归是一种分类方法。 逻辑斯蒂分布 设X是随机变量,X服从逻辑斯蒂分布是指X具有下列分布函数和密度函数 分布函数F(x)=P(X≤x)=11+e−(x−μ)/γF(x) = P(X\leq x)=\frac{1}{1+e^{-(x-\mu)/\gamma}}F(x)=P(X≤x)=1+e−(x−μ)/γ1 密度函数f(x)=F′(x)=e−(x−μ)/γγ(1+e−(x−μ)/γ)2f(...
2020-03-03 11:05:03
215
原创 统计学习方法第4章朴素贝叶斯法
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法 对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的俩he概率分布,然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。 朴素贝叶斯法属于生成模型 条件独立假设等于是说用于分类的特征在类确定的条件下都是条件独立的。 P(X=x∣Y=ck)=P(X(1)=x(1),…,X(n)=x(n)∣Y=ck)=∏j=1nP...
2020-03-02 12:11:44
148
原创 统计学习方法第3章 k近邻法
k近邻法是一种基本分类与回归方法。 给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。 当k=1时,k近邻法就是最近邻法。 k的选择会对k近邻法的结果产生重大影响。 k值的减小时模型变得复杂,容易产生过拟合。 k值的增大会是模型变得简单,荣誉发生预测错误。 k值一般选择一个比较小的数值。 距离度量可以选择欧氏距离,...
2020-03-01 10:09:51
241
原创 统计学习方法第2章 感知机
符号函数 sign(x)={+1x>=0−1x<0 sign(x) = \left\{ \begin{aligned} +1 &\quad x>=0 \\ -1 &\quad x<0 \end{aligned} \right. sign(x)={+1−1x>=0x<0 感知机模型方程f(x)=sign(wx+b)f(x) = sign(wx ...
2020-02-29 11:33:03
134
原创 统计学习方法第一章概论
三要素:方法 = 模型 + 策略 + 算法 损失函数:度量模型一次预测的好坏(loss function/ cost function) 风险函数:度量平均意义下模型的好坏 损失函数:(1)0-1损失函数 (2)平方损失函数 (3)绝对损失函数 (4)对数损失函数 -log P(Y|X) 风险函数:损失函数的期望(对于训练集的平均损失) 学习目标是选择期望风险最小的模型 极大似然估计是经验风险最小...
2020-02-26 12:01:43
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅