自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 openCV简要-视频课

UP主:洛必达数数点此进入课程

2021-01-28 11:34:36 65

原创 【leetCode】剑指Offer 10. I.斐波那契数列

1. 题目描述https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/submissions/2. 思路除了递归方法以外,可以用动态规划的思想来做,复杂度压缩到O(n),即直接求出斐波那契数列存起来(有递推式f[n]=f[n-1]+f[n-2])这样我们就避免了直接递归中重复求相同的数(比如计算f[n-1]时又会去求f[n-2],这样和f[n]中的f[n-2]就重复了)造成时间复杂度陡升。3. 代码class Solution {pu

2022-01-11 23:37:53 288 2

原创 【leetCode】剑指Offer 09. 用两个栈实现队列

1. 题目链接https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/2. 思路两个栈实现队列的效果,首先要理解栈是后进先出表,其出栈顺序与进展顺序相反;而队列是先进先出表,这就意味着在appendTail得到的序列在下一次deleteHead前要反转过来,这样就用到了另一个栈(把A栈的元素倒腾到B栈恰好会反转A栈中原来的元素顺序)因此用A栈作为appendTail的栈,B栈作为deleteHead的栈,凡是新

2022-01-11 23:21:58 3359

原创 03_机器学习问题分类【机器学习基石】

03_机器学习问题分类一、根据不同输出空间分类1. 分类问题对于输入 x\pmb xxxx ,能够给出一个标记 yyy 。二元分类 (Binary Classification),y∈{−1,+1}y \in \{-1,+1\}y∈{−1,+1}。多元分类 (Multiclass Classification),y∈{a1,a2,...,an}y \in \{a_1, a_2,...,a_n\}y∈{a1​,a2​,...,an​}2. 回归问题对于输入 x\pmb xxxx ,能够给出一

2021-12-08 18:21:35 380 1

原创 02_感知机【机器学习基石】

02_感知机一、概念最终要得到的输出是(Y/N)正例或反例,这种对样本二分类的问题,通常用感知机解决。感知机就是通过对输入向量的各个元素进行加权线性组合,根据得到的分数来判定是正例还是反例。在假设空间中,选取 w\pmb wwww 作为对目标 w∗\pmb w^*www∗ 的近似。XXX 为样本输入矩阵。h(X)=sign(wTX)h(X) =sign(\pmb w^TX)h(X)=sign(wwwTX)二、策略假设空间 HHH 是一个无限大的集合,里面是无穷无尽的对所有样本进行二分的空间平面

2021-12-07 17:46:01 634

原创 01_学习问题【机器学习基石】

01_学习问题一、概念什么是机器学习?机器如何学习?机器怎么就算能够学习了?…二、什么是机器学习?学习的本质:从观察开始,转化为有用的技能。机器学习:从数据中学习,并且在实际检验中能够有较好的正确率、更高的性能、更好的表现。现实生活中,我们往往无法一开始就像好条条规则来设计程序解决问题,还有很多无法提前预料到的情况,这就是机器学习存在的实际意义之一。机器学习的三个关键:1. 问题有潜藏的“模式”让机器可以学习; 2. 无法设计传统的程序解决; 3. 能够有数据做输入。三、机器

2021-12-07 14:46:37 851

原创 10_对数几率回归【机器学习基石】

10_对数几率回归一、概念(模型)相比于线性回归,我们不再希望假设函数假设函数输出一个连续值,而是希望它能够输出一个 [0,1][0,1][0,1] 的概率值。在原来线性回归的基础上,增加了一个激活函数,即h(z)=11+e−zz=wTxh(z)=\frac{1}{1+e^{-z}} \quad z=w^Txh(z)=1+e−z1​z=wTxhhh 的图像是一个S型的,所以也被称为Sigmoid函数。我们希望模型输出的结果是一个概率值,仍然是以正反例作为训练样本(二分类问题)的话,我们就以0

2021-11-23 13:33:34 768

原创 09_线性回归【机器学习基石】

09_线性回归一、概念(模型)数据集D=(x1,y1),(x2,y2),...,(xN,yN)xn∈RdD={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}\quad x_n\in R^{d}D=(x1​,y1​),(x2​,y2​),...,(xN​,yN​)xn​∈Rd 我们希望找到一个足够好的假设函数h(x)h(x)h(x)能够尽量离每一个点的yyy都接近。存在h(x)h(x)h(x)这个超平面,所有样本点到它距离之和达到一个最小值;这个就是要找的超平面。二、策略1.

2021-11-23 13:20:25 543

原创 Maven基础知识(尚硅谷)

Maven基础知识项目太大,不适合用package划分,最好是每一个模块对应一个工程,利于分工协作项目中的jar包必须手动copy到WEB-INF/lib目录下,最好只需要引用而不需要真正复制过来jar包版本参差不齐,有些jar包只能通过maven或者svn提供下载,我们需要一种规范的方式来下载jar包之间不是独立存在的,往往一个jar包依赖于另一个jar包,最好是自动引入…一、Maven的概念是一个Java平台的自动化构建工具。1. 构建以java源文件、框架配置文件、jsp、htm

2021-11-18 14:58:55 651

原创 Ajax基础知识(尚硅谷)

Ajax基础知识(尚硅谷)搜索框的联想重复用户名的提醒懒加载的效果朋友圈往下翻到底,再加载新的内容用户不需要刷新、跳转就能在网页上有服务器返回的内容…一、原生Ajax​ 异步的js和XML,不需要整体页面刷新再等服务器返回,而是每个部分都可以向服务器发请求得数据。1.2 Ajax用到的数据格式​ 原来使用的是XML,但现在使用的是JSON1.3 Ajax优缺点​ 优点:无需刷新页面与服务端进行通信,允许根据用户事件来更新页面中的部分内容​ 缺点:没有浏览历史(

2021-11-04 17:24:17 265

原创 关于npm安装好的模块在VScode中无法识别命令的问题

一、问题我在启动nodemon时遇到的两个问题:npm i nodemon -g 明明已经在全局环境中安装了nodemon但是在终端里无法使用,说“命令无法被识别”nodemon -v检查nodemon是否可用时,又说“系统禁止执行脚本”二、解决对于问题1:首先确定全局模块和cache的路径是否配置正确npm config prefix set '本机安装nodejs的路径\node_global'npm config cache set '本机安装nodejs的路径\node_cach

2021-11-04 09:20:23 1281

原创 【LeetCode】234.回文链表【双指针】

还有4篇,嗯水!:- )1.题目题目链接:点击这里2.解决思路用快慢指针,慢指针一次挪动一个节点,快指针一次挪动两个,这样当快指针停下来时,慢指针就会停在整个链表的中间节点(偶数个结点是中间值偏小的那一个)反转慢指针->next的部分;左半部分链表从头开始看,右半部分链表从尾开始看,逐个结点比较,若全部相同,则为回文链表。3.代码/** * Definition for singly-linked list. * struct ListNode { * int val;

2021-09-10 20:03:34 76

原创 【LeetCode】206.反转链表【双指针】

再发5篇就满100篇了,我就嗯水了蛤~:- )1.题目题目链接:点击这里2.解决思路双指针的快慢指针应用,用快指针curr指向下一个结点,慢指针prev指向当前结点(注意反转时要以空指针当成最后一个结点)在每个结点反转next指针之前,先保留下它当前的next指针mid,用mid作为下一个curr(实现curr向后移动)之后再将curr->next=prev实现反转,prev随即变为curr,curr再更新为mid。在纸上画一画图可以比较清楚的观察到过程,本质上只需要注意在反转前保存好原来的

2021-09-10 17:57:54 82

原创 Acwing 165.小猫爬山【DFS】【剪枝】

1.题目题目链接:点击这里2.解决思路尽量减少缆车的使用;从0个缆车开始,对于每一只猫咪,如果当前的num个缆车中还有某个缆车能装得下,则把这只猫咪装到这个缆车中,该缆车容积sum减少掉猫咪体重;如果当前num个缆车没有能装下当前猫咪的,则需要新租一个缆车,num++;DFS的过程中,状态空间树上的某个节点若出现num>ans,这个分支也没有继续下去的必要了,剪枝。3.代码#include <iostream>#include <cstdio>#include &

2021-09-09 10:52:08 113

原创 Acwing 1117.单词接龙【DFS】

1.题目题目链接:点击这里2.解决思路可以先将所有可能的“衔接”(即接龙)情况枚举出来;对于每一对字符串(A,B)单词A的后缀与单词B的前缀相同,并找到最长的相同情况,记为g[a][b]=length。注意不能将整个A用来接龙。然后对于某个字母开头的字符串使用DFS,找到它能够接龙的最大值。3.代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>

2021-09-09 10:02:47 136

原创 Acwing3378.代理服务器【贪心】

1.题目题目描述:点击这里Attention!!! 这道题是清华大学2009年研究生复试机试题2.解题思路贪心思想:我们每次选能够坚持最久不换的代理服务器,也就是遍历输入的m个ip地址,同时记录当前出现过的代理服务器ip;一旦当遍历到某个ip地址时,发现所有的代理服务器ip都出现过,那么记一次转换(即最后发现的这个代理服务器能够坚持最久)同时更新记录(注意:一定要将上一次发生转换的代理服务器ip加入下一轮记录)这里使用set作为存储的数据结构。3.代码#include <iostream

2021-08-27 21:54:32 126

原创 Acwing 3573.日期累加【模拟】

1.题目描述题目链接:点击这里2.解决思路老生常谈的日期类题目。这道题把握以下三点:闰年的二月特殊性、跨月和跨年、当月剩余天数。特别需要注意的是,每次跨月或跨年后,日期应更新为0日(因为这是当月剩余天数不足以抵消剩余增加天数,满了上一个月而不足当前月的第一天)3.代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespac

2021-08-25 09:47:17 75

原创 Acwing 3812.机器人走迷宫【全排列】

1.题目描述题目链接:点击这里2.解决思路只需要考虑,不管是什么序列,可选方案最多24种(4!种)所以我们只需要用next_permutation搞出0123的全排列,并让它们每一个值与序列中不同的值相对应(如0代表上,可以对应序列中的0,1,2,3;即0,1,2,3都可作为上)然后再按序列跑一遍图就行了。3.代码#include <iostream>#include <cstdio>#include <cstring>#include <algor

2021-08-24 10:37:44 91

原创 机器学习基石——随记

这篇文章是看林轩田老师的机器学习基石课程有感写下,记录了自己第一次不太理解的地方。我会看很多次、想很多次,所以这篇文章可能会被多次修改或追加内容(想起来啥就写点啥 :- )2021-08-19有关于计算学习理论的部分:林老师从机器学习的本质入手,说明了“机器为什么可以学习”。其实也就是西瓜书中第12章讲述的计算学习理论。我是将二者结合了一下才从直觉上搞明白(我太菜了)1.经验误差:我们手头上有数据集,我们用这些数据集来训练,训练得到的假设函数对这个数据集(训练集)分类的错误样本数的平均值即为经验误差

2021-08-20 11:06:19 141

原创 【LeetCode】79. 单词搜索【DFS】

1.题目链接点击这里2.解题思路遍历整个矩阵,从与word首字符相同的位置开始搜索匹配,DFS中记下当前匹配word的最大下标,当下标等于word的最大下标时即匹配成功。3.代码class Solution {public: int n,m; int sta[8][8]; bool flag; void dfs(int x,int y,int index,string word,vector<vector<char>>& boa

2021-06-22 16:12:30 72

原创 【LeetCode】每日一题 38. 字符串的排列【全排列】

1.题目链接点击这里2.解题思路每日一水,直接使用next_permutation,但注意两个地方:第一,next_permutation的可接收参数不含string类型,所以要先变成char数组;第二,next_permutation是按照字典序的全排列,即如果给出的字符串不是字典升序,则全排列函数就会从当前字符串开始排列,而不会枚举之前的那些字符串,所以在使用前要先对字符串进行排序。3.代码class Solution {public: vector<string> pe

2021-06-22 15:21:55 204

原创 【LeetCode】每日一题 483. 最小好进制【数学;二项式定理】

1.题目链接点击这里2.解题思路首先,n在k进制下展开:n=k ^ 0 + k ^ 1 + k ^ 2 + …+ k ^ m > k ^ m;展开式可以看作一个首项为1,公比为k的等比数列的求和,(1 - k^m) / (1 - k) = n ;求出m为 m = kn - n + 1 < kn ;那么m的上界就确定为 m < log_k(n) ;根据二项式定理:(1+k) ^ m > n > k ^ m ;那么有k < pow(n,1/m) &lt

2021-06-18 12:37:23 98

原创 【POJ】1067. 取石子游戏【博弈论——威佐夫博弈】

1.题目链接点击这里2.解题思路威佐夫博弈模板题,对于两堆石子(a,b),有a<b,每个回合可以从某一堆石子中取出任意个石子,也可以从两堆中取走相同数量的石子。考虑(0,0)是一种局面,先手必败。考虑(1,2)是第二种局面,先手必败。此后把这种局面称为奇异局势。以此类推,有(3,5) (4,7) (5,9) (6,11) … 观察到每个奇异局势a都是未在前面局势中出现的最小自然数,且有b=a+k , k=0,1,2,…结论:如果a恰好等于(b-a)*黄金分割率(1+sqrt(5))/2

2021-06-16 23:15:35 206

原创 【LeetCode】56. 合并区间【双指针】

1.题目链接点击这里2.解题思路将存在交集的区间合并起来,设置当前合并区间的左边界st,右边界ed;按左边界大小对区间进行排序,遍历所有区间;设当前区间的左边界为l,右边界为r,当 ed<l 时,当前合并区间达到最大,和当前区间没有交集,即求得了一个合并后的区间[st,ed],然后更新st=l,ed=r;当 ed>=l 时,ed更新为当前区间的右边界。3.代码class Solution {public: vector<vector<int>> mer

2021-06-16 18:23:28 48

原创 【LeetCode】292. Nim游戏【博弈论——Nim游戏——bash博弈】

1.题目链接点击这里2.解题思路一堆有n个石子的石子堆。两名玩家轮流取走石子,每名玩家每回合只能拿走最少1个,最多m个石子,最后拿走石子的人获胜。这是典型的巴什博弈。我们发现,如果玩家面对石子为m+1个的局面,不管拿多少个,必败。所以,我们要做的就是把石子数量为(m+1)的整数倍的局面推给对手。如果两方都知道这个最优策略,那么胜负在一开始就确定了。即若n%(m+1)!=0,则先手必胜(总有方法能够把必败局面抛给对手)反之则必败。3.代码class Solution {public: b

2021-06-15 22:56:08 263 4

原创 【LeetCode】290.单词规律【哈希】

1.题目链接点击这里2.解题思路pattern中字符构成的集合与所有单词构成的集合若形成双射,则匹配成功;否则匹配失败。用两个哈希表来记录映射关系,由于单个哈希表只能体现单向的映射关系(即只能反映A到B存在映射关系,即只能反映是否为满射,不能反映是否为单射)所以需要再来一个哈希表记录从B到A的映射关系,只由两个表对应且一一对应,才能说匹配成功。3.代码class Solution {public: bool wordPattern(string pattern, string s) {

2021-06-15 22:34:03 94

原创 【LeetCode】6. Z字形变换【模拟、找规律】

1.题目链接2.解题思路对于只有一个字符的情况,直接输出即可。对于由一个以上字符的情况:可以发现每步迭代都是由“画成一条竖线”和“从左下方到右上方画一条直线”构成的,而且这两条线的长度都是numRows-1。结合我们的发现,模拟的大体框架已经出来了。接下来是细节处理:线没画完时就结束了怎么办?其实可以用最简单粗暴的办法,直接跳出循环,不画了。3.代码class Solution {public: string convert(string s, int numRows) {

2021-06-11 09:28:44 86

原创 【LeetCode】每日一题--279.完全平方数【DP】

1.题目链接点击这里!2.解题思路DP的思想,站在某个状态考虑他可能由哪些状态推出:对于n,他可能由 (n - 一个完全平方数) 推出,这样的话,用 f[i] 代表数i的最少完全平方数,它是由 f[i - (符合(i - 完全平方数 >= 0)的这个完全平方数)] 推出来的。我们不妨先把所有n上限以内的所有完全平方数打表,这样在写DP的循环时就比较直观,不容易搞错了。3.代码class Solution {public: int numSquares(int n) {

2021-06-11 08:54:21 88

原创 ch1(数据结构篇)——单链表、双链表、栈、队列、单调栈、单调队列

1.自然语言描述①单链表:这里使用的是不带头结点的单链表,由一个指向第一个结点的head指针,e数组(e[i]表示第i个插入列表的结点)ne数组(ne[i]表示第i个插入链表的结点的邻接结点)idx表示下一次插入结点的序号。②双链表:在单链表的基础上加入了每个结点左邻接的结点数组。③栈:先进后出表,用数组模拟,tt表示栈顶。④队列:先进先出表,用数组模拟,hh表示队首,tt表示队尾。⑤单调栈:不断pop栈输出直到栈空,如果得到单调递增序列则为单调递增栈,反之为单调递减栈。对于一个序列,为了找出序列

2021-03-01 12:58:08 254

原创 openCV简要-10 轮廓检测

1.寻找图像中的轮廓cv2.findContours(img,mode,method)mode为轮廓检索模式:RETR_EXTERNAL:只检索最外面的轮廓RETR_LIST:检索所有轮廓,并把所有轮廓保存在一个链表中RETR_CCOMP:检索所有轮廓,组织为两层;第一层是外部边界,第二层是空洞边界RETR_TREE:检索所有轮廓并重构轮廓层次。method为轮廓逼近方法:CHAIN_APPROX_NONE:用实线段表示轮廓CHAIN_APPROX_SIMPLE:只保留轮廓的顶点impo

2021-02-02 15:06:06 172

原创 openCV简要-09 图像金字塔

1.基本内容将原始图像按照金字塔的样式扩大/缩小。2.高斯金字塔高斯金字塔(向下采样,缩小):高斯金字塔(向上采样,放大):import cv2import numpy as npimg=cv2.imread('test.jpg')up=cv2.pyrUp(img)#上采样print(up.shape)#发现矩阵被放大了一倍down=cv2.pyrDown(img)#下采样print(down.shape)#发现矩阵被缩小了一倍#先放大再缩小,会损坏图像down1=cv2

2021-01-28 11:33:02 69

原创 openCV简要-08 Canny边缘检测

1.过程1)使用高斯滤波器,去掉图像中的噪音点。2)计算出每个像素点的梯度强度和方向。3)利用非极大值抑制,以消除边缘检测产生的杂散响应4)用双阈值检测确定真正的和潜在的边缘5)抑制孤立的弱边缘2.高斯滤波器之前使用过高斯滤波器。用高斯滤波器的核进行卷积运算时还是要进行归一化处理。3.梯度和方向这里使用Sobel算子来计算。4.非极大值抑制对于中心像素点,做一条沿它梯度方向的直线。如图,计算出 M(dtmp1) 和 M(dtmp2) 后,与C的值做对比;如果C比二者都大,才保留

2021-01-28 10:35:17 79

原创 openCV简要-07 背景建模

1.帧差法摄像机静止(如监控)拍摄的视频,关心画面中运动的物体,试图将他们识别出来。第一种方法是帧差法:即拿当前帧和前一帧做差取差值,若差值大于某一个数,则将这个像素点判定为是运动的(前景),否则是静止的(背景)但帧差法会引入噪声和空洞问题。2.混合高斯模型对视频中的图像背景用混合高斯模型模拟;当新来的像素点不能满足当前混合高斯模型中所有的分布,则判定为前景,否则判定为背景。判定标准:新来的像素点的分布均值与GMM中的某个分布的均值做差,若差值大于后者方差的3倍,则认为新来的这个像素点不满足GM

2021-01-27 17:15:26 230

原创 openCV简要-06 傅里叶变换

1.基本思想任何连续周期信号可以由一组适当的正弦曲线组合而成。即使是有棱角的信号,也可以用正弦曲线组合无限的逼近它。图像中的低频部分:变化不明显的部分;图像的高频部分:变化明显的部分(如边界)2.低通滤波器将图像中的低频成分保留,而高频成分滤掉。这样会使最终图像所有边界、线条变得模糊。import cv2import numpy as npimport matplotlib.pyplot as pltimg=cv2.imread('test.jpg',0)img_float32=np.f

2021-01-27 12:07:48 108

原创 openCV简要-05 直方图

1.绘制直方图一个图像的每个像素点的值都在0 ~ 255,统计图像中0 ~ 255各出现了多少次,以此绘制分布图import cv2import numpy as npimport matplotlib.pyplot as pltimg=cv2.imread('test.jpg',0)#0表示以灰度图格式读入hist=cv2.calcHist([img],[0],None,[256],[0,256])#函数原型:calcHist(src,channels,mask,histSize,rang

2021-01-26 15:53:54 60

原创 openCV简要-04 图像梯度处理

1.Sobel算子import cv2import numpy as npimg=cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE)#cv2.Sobel(src,ddepth,dx,dy,ksize)#ksize为Sobel算子的大小sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)#cv2.CV_64F使结果可为负数sobely=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)#得到Gx

2021-01-26 12:39:40 111 1

原创 openCV简要-03 图像形态学处理

1.腐蚀和膨胀形态学操作一般用于处理二值化图像腐蚀用来去掉图像边缘的一些细小突起/刺状物,膨胀可用于对腐蚀后的图像进行恢复。import cv2import numpy as np#1.腐蚀img=cv2.imread('test.jpg')#图像一般为二值化图像kernel=np.ones((3,3),np.uint8)erosion=cv2.erode(img,kernel,iterations=1)#erode进行腐蚀操作,用kernel作为卷积核,iterations为迭代次数,

2021-01-26 10:55:00 96

原创 openCV简要-02 阈值与平滑处理

1.阈值处理ret,det=cv2.threshold(src,thresh,maxval,type)#threshold函数原型:#det为输出图#src为输入图,thresh为设置的阈值,maxval表示矩阵中每个分量的最大值#type表示阈值处理类型#cv2.THRESH_BINARY 超过阈值部分取maxval,否则取0#cv2.THRESH_BINARY_INV 与BINARY相反#cv2.THRESH_TRUNC 大于阈值部分设置为阈值,否则不变(截断)#cv2.THRESH_

2021-01-25 16:21:14 134

原创 openCV简要-01 图像基本操作

1.图像读入import cv2import numpy #图像以ndarray存储img=cv2.imread('图像路径/图像名称',彩色/灰度图)#cv2.IMREAD_COLOR 彩色图#cv2.IMREAD_GRAYSCALE 灰度图#图像读入以后是一个三维矩阵,矩阵中的的每一个元素都是一个像素点,[b,g,r]的形式来表示一个像素点在B,G,R通道中的值。2.图像显示cv2.imshow('image',img)cv2.waitKey(毫秒数) #在此等待的时间(图像显示

2021-01-25 12:20:30 346

原创 Acwing 1137.选择最佳线路【SPFA】

1.题目题目链接2.解决方法当要求多个源点到汇点的最短路径,可以将这些源点添加一个虚拟的前驱结点作为虚拟源点;问题转化为求从虚拟源点的单源最短路径问题。3.代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int MAXN=1010,MAX

2020-11-30 22:41:49 197

空空如也

空空如也

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

TA关注的人

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