自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-09-09 关于kmp算法的理解 c++

//读 hsz推荐的 写的特别好特别细的 阮行止–关于kmp的算法的知乎回答 有感KMP算法KMP算法 是一种 字符串匹配算法替代了原本的暴力算法( 时间复杂度为O(mn))//进入正题如图所示:S 是主串P 是模式串题中要求的 即 在主串S 中 匹配 模式串P为避免超时, 我们要减少比较的趟数,提高效率,而KMP的思想所在:尽可能利用残余信息。这次匹配失败后,按照暴力算法,则会将P向后移一位,进行下一轮的匹配但我们发现 在第一个字符的匹配就失败了可想而知,后面3轮都是这样跳

2021-09-09 21:00:03 377

原创 2021-09-06/07 leetcode kmp算法 实现 strStr()

不知道该怎么解释kmp算法,我的解释肯定也不专业以及清晰,因此,在初步了解kmp算法之后,再通过这道题及其注释 来更好理解kmp吧实现 strStr()由kmp可知,我们在解决此类题时,需要两个大步骤,第一步是 找到needle的next数组next数组,即needle字符串中,每个字母所对应的最长前后缀长度第二步是 在haystack字符串 和 needle字符串中,分别用 i,j指向它们,一个一个比较是否相同如图所示:若两个字母不同,则用前面求的next数组找到j回溯的位置,eg:当i

2021-09-07 21:35:30 198 1

原创 前端案例:产品模块

* 上下0 左右28 注意:这里的元素没有指定宽度高度,因此设置padding不会撑开盒子*/2、内容装入 图片(img标签);分别三个子盒子装入两段评价以及商品信息。/* h4标签为块级标签,这里需要和后面的标签在同一行因此需要转化一下*/1、大的父级盒子包含全部的内容。/* 宽度和父级一致 *//* 水平居中对齐 */

2024-03-21 17:52:10 591

原创 CSS 三大特性 详细讲解

当相同选择器设置相同样式且发生冲突时,此时后者的样式会覆盖(层叠)前者冲突样式。CSS的层叠性就是用于解决样式冲突问题。divcolor;</</

2024-03-19 22:20:08 805

原创 前端案例:五彩导航

效果图如下所示:上图中元素块为链接,当鼠标放置在元素上方时则变色注意点:(1)链接属于行内元素,但需要高度宽度,因此需要使用到模式转换,将行内元素转化为行内块元素(2)链接中的文字需要剧中(3)需要设置背景图片(4)鼠标经过时背景图片样式改变,使用到链接伪类选择器。

2024-03-14 12:40:51 1152

原创 CSS 背景

注意:背景图片和颜色可以同时设定,但是图片会盖在颜色上方。

2024-03-13 16:03:52 404

原创 CSS元素显示模式

定义:元素显示模式是指元素(即标签)以什么方式进行显示。HTML元素分为块元素和行内元素(下列仅举出部分)其中 是最典型的块元素。(1)块元素独占一行(2)块元素的高度、宽度、外边距以及内边距都可以控制(3)块元素宽度默认是容器(父级盒子)的100%(4)块元素是一个容器及盒子,其中可以再放行内或者块级元素文字类的元素内不可使用块级元素如 标签,该标签使用存放文字的,因此不可存放块级元素,尤其注意不能放;同理,中不能存放块级元素常见行内元素有其中,为最典型的行内元素(1)一行可放多个行内元素,

2024-03-12 13:26:05 482

原创 Emmet语法 快速生成HTML标签&CSS样式

Emmet语法 快速生成HTML标签和CSS样式

2024-03-12 11:37:52 385

原创 2022-08-12-2023-03-10+ 关于仓库选址问题解决历程 (the uncapacitated facility location problem )

自2022年8月12日至2023年3月10日+的时间内,参加了院内的组合优化方向研究组,我致力于完成优化the uncapacitated facility location problem(UFLP)问题,以下是我的工作内容发展过程以及该工作结束后的总结反思。

2023-03-12 15:23:49 4056 1

原创 2022-06-14至2022-08-11 关于复现MKP算法的总结与反思

关于解决01MKP问题的A Hybrid Approach for the 0–1 Multidimensional Knapsack problem 论文的复现工作,本文介绍我对该工作内容发展过程以及该工作结束后的总结反思。

2023-03-10 16:53:06 766

原创 机器学习 多向量输入 Self-attention 自注意力机制 sequence labeling

前提:Dr.He推荐学习的李宏毅讲的Machine Learning的学习博客引入当输入为一个向量时,输出为一个数值(Regression)或是一个class(Classification)当机器输入为vector set时,输出为多个数值或多个class。Vector set as InputVector set是一个可包含不同长度、数目向量的sequence。以下列举了Vector set作为输入的4种形式。(1)用vector set来表示句子,通过Machine做文字处理Sequ

2022-05-12 20:16:47 1671

原创 微信小程序开发

项目组成结构(1)pages:用于存放所有小程序页面(2)utils:用于存放工具性质的模块(例如:格式化时间的自定义模块)(3)app.js:小程序项目的入口文件(4)app.json:小程序项目的全局配置文件(5)app.wxss:小程序项目的全局样式文件(在全局生效,应用到每一个页面)(6)project.config.json:项目的配置文件(7)sitemap.json:用于配配置小程序及其页面是否允许被微信索引页面组成结构将小程序中不同页面以不同文件夹形式存放在pages文件

2022-04-08 16:48:55 1123 1

原创 机器学习 卷积神经网络 Convolutional Neural Network(CNN)

CNN— 卷积神经网络CNN专用在影像上的神经网络,目的是作影像辨识、影像分类,即通过输入的影像,输出影像中的内容。对于CNN,有两种解释方法:法一如上图所示:输入:image(假设大小固定为100x100,若非100x100的图片则需要rescale后再放入影像辨识系统中)输出:y’(vector)目标输出:y^ (每一个目标需要表示成one-hot vector,在向量中数值为1的维度对应所属目标,且维度长度决定现在的模型可辨识不...

2022-03-28 20:44:36 5999

原创 机器学习 Classification的Loss计算 不同Loss function对training的影响

classification输出的表示从regression引入:在Regression中,输入为x,model的输出为y,目标输出为label y。若将classification当作regression看待,输入为x,model输出为y,目标输出为 label y class但model输出为数字,而目标输出为class,因此需要将class转化为数字若用序号表示不同的class,例如上图中,有序号1与序号2更近的关系,序号1与序号3更远的关系,若class之间并不存在特定关系,则为cl

2022-03-22 20:39:27 2315

原创 机器学习 Optimizer optimization的方法 Adaptive Learning rate

当Loss减小,且趋于平稳时,可能是gradient 趋近于0,Loss处于critical point;也可能是gradient并不为0,在error surface谷壁间来回振荡,导致Loss无法继续降低。training stuck ≠ Small Gradient多数时候training在未到critical point的时候,Loss就几乎停止变化了。举如下例子以解释:黑点为起始处,黄色叉为目标点,现要求从起始处移动到目标点。learning rate决定移动的步伐左图为learning

2022-03-17 21:23:13 1559 2

原创 机器学习 关于Batch and Momentum

Batch在机器学习基本概念中讲述了Optimization的方法,我们可以将训练资料划分为batches不断用batch进行参数更新,直至所有看完batch,为一个epoch。每过一个epoch,将batches打乱。使用batch的原因Batch size = N (Full batch) 一个batch包含所有的训练资料,即不使用batch的情况。看完所有训练资料更新一次参数。Batch Size大,可归为Large Batch。Batch size = 1 每看一笔训练资料更新一次参数,

2022-03-15 21:15:58 1421

原创 机器学习 gradient小的情况

gradient小的具体情况在Optimization的过程中,可能会出现gradient趋近于0,Loss仍然不够低且几乎不变化的情况。在gradient趋近于0的点称为critical point(临界点)出现这种现象一般有两种情况:(1)local minimalocal minima是在当前范围中处于Loss处于最低点(2)saddle pointLoss可增大,亦可减小,取决于走的方向如何判断critical point的类别?运用数学知识解决:在critical po

2022-03-14 19:54:01 1619

原创 机器学习 Loss大的原因及解决办法 过拟合的原因及解决措施

在从训练资料中得到Loss后,操作路径如下Loss is Large原因(1)model bias可能是model太简单/弹性不足,使得Loss没有足够小解决办法:(1)增加features(增加训练资料范围)(2)Deep Learning(增加层数)(2)Optimization可能是参数优化不足,使得Loss不够小gradient descent 无法找出合适的参数使得Loss足够小,这里待补充(下节课才讲)如何判断是哪种原因若无法正确判断原因,一味寻找,会导致始终找不到足

2022-03-07 20:48:19 14283

原创 Machine Learning 机器学习基本概念

前提:Dr.He推荐学习的李宏毅讲的Machine Learning的学习博客机器学习基本概念简介机器学习的意义约等于寻找函数(looking for function)EXAMPLES以下举出3个例子用于解释1、语音识别技术输入:声音讯号输出:声音讯号的内容这个函数无法被人手写出,只能凭借机器找出2、图像识别技术输入:图片输出:图片中的内容3、下棋输入:棋盘上黑子和白子的位置输出:下一步落子的位置机器学习的不同类别由于所需函数不同,机器学习有不同的类别(1)Regre

2022-01-16 20:33:50 858

原创 计算机组成原理 笔记 第二版 唐朔飞

Chapter 1 计算机系统概论1.1计算机简介1.1.1计算机的软硬件概念硬件:计算机的实体部分软件:由事先编制的具有各类特殊功能的程序组成1.1.2计算机系统的层次结构1.2计算机的基本组成术语解释:存储体 由许多存储单元组成,存储单元有包含若干个存储元件,每个存储元件能寄存一位二进制“0”或“1”,如图所示MAR:存储器地址寄存器 用来存放于访问的存储单元的地址 位数 = 存储单元个数MDR:存储器数据寄存器 用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码

2021-12-19 11:09:28 1130

原创 2021-12-11 leeched 动态规划 304.二维区域和检索-矩阵不可变 c++

题目leetcode.304.二维区域和检索-矩阵不可变解释(一)初始化:求矩阵每个元素对应的前缀和如图所示,对于矩阵中一元素(i, j),其前缀和为以该元素为右下角的矩形区域内所有值的和,即虚线框内的所有元素值之和(二)求(r1, c1)-(r2,c2)矩形区域内所有值的和如图所示, (r1, c1)-(r2,c2)矩形区域内所有值的和 = 虚线框内所有值之和思路求矩形前缀和构造vector presum(m + 1, vector(n + 1, 0)) (m,n分别为matrix

2021-12-11 21:17:06 548

原创 2021-12-09 leetcode 动态规划 1314.矩形区域和 c++

题目leetcode 1314.矩形区域和解释:已知: 矩阵mat,整数k求解:对于矩阵mat中的一坐标为(i,j)的元素,在矩阵范围内,求从元素(i - k, j - k)到元素(i + k, j + k)的矩形区域内所有值的和。example: 如下图所示,对于mat[5][5],k = 1,对于元素(i, j),求(i - 1, j - 1)到(i + 1, j + 1)的矩形区域中所有元素和,即下图黑框框住的矩形中所有元素的和。BF算法暴力算法思路遍历mat中所有元素,假设遍历到

2021-12-10 00:17:54 731

原创 2021-12-05 leetcode 动态规划 343.整数拆分 c++

题目leetcode 343.整数拆分思路动态规划状态dp[i] : 至少两个正整数的和为i,这些正整数的最大乘积为dp[i]转移方程将dp固定为两个数的乘积,在此基础上对其中一个乘数进行拆分。对于dp[i]中的i:拆分成 j (0 < j < i) + (i - j) ,对不同的j进行遍历:dp[i] = i * (i - j)。但可能上述得到的不是最大的乘积,例如将6拆分为1 * 5,再将5拆分为2 * 3就能得到更大的乘积。因此可能 (i - j) 还可以继续拆分成

2021-12-05 20:10:08 368

原创 2021-12-03 leetcode 动态规划 377.组合总和 IV c++

题目leetcode 377.组合总和 IV已知:数组nums,目标整数target现求:nums中元素之和为target的排列数注意:nums中各元素可多次选取且元素选取顺序也会影响思路动态规划状态dp[i] : 选取元素之和为i的方案总数则题目所求目标为dp[target]转移方程假设已知dp[i - num],即选取元素之和为i - num 的方案总数,其中num为nums中一个元素。原总和 = nums[X1] + … + nums[Xn] = i - num则在原

2021-12-03 19:57:01 710

原创 2021-12-1 leetcode 动态规划 1143.最长公共子序列 c++

题目leetcode 1143.最长公共子序列思路动态规划状态dp[i][j]: text1[0:i]与text2[0:j]的最长公共子序列的长度其中,text1[0:i]表示text1的前缀且长度为i,text2[0:j]同理。即text1[0:i]表示子串text1[0] ~ text1[i - 1],text2[0:j]表示子串text2[0] ~ text[j-1]。转移假设已知:dp[i - 1][j - 1],即text1[0:i - 1]与text2[0:j - 1]的最长公

2021-12-01 21:38:48 458

原创 2021-11-28 图 构造最小生成树

问题引入在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。建立每条线路都需要一定的经济代价。如何在经济代价最低情况下建立这个通信网?如上图所示:图中每一个顶点表示不同城市;顶点间相连的线表示两城市间的路线;顶点间线上的值表示两城市建立线路的经济代价。要使耗费最少 == 构造联通网中的最小代价生成树(即最小生成树)定义最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用 kruskal

2021-11-29 19:15:26 1026

原创 2021-11-27 leetcode 动态规划 双指针 392.判断子序列 c++

题目leetcode 392.判断子序列即,判断s是否在t中存在,且在t中s的组成字母顺序不变思路法一 :双指针两个指针i,j分别指向字符串t,s中的第一个元素。初始化计数器cnt = 0现遍历i和j:每当t[i] == t[j]时,i和j都向后移一位。计数器cnt++否则i++,指针i向后移一位,将下一个所指元素继续与t[j]匹配。计数器不变。最后判断:若cnt == s.size(),证明s.size()次s与t中元素一一匹配成功,即t中存在s,且是按照s本身顺序存在;否则不存在

2021-11-28 16:57:37 388

原创 2021-11-25 leetcode 动态规划 300.最长增长子序列 c++

题目leetcode 300.最长增长子序列Q:在整数数组nums中求最长严格递增子序列长度思路遍历nums中每一个元素,把每个元素作为递增子序列结尾(注意这个元素必须被选取)的情况找出来,最后输出最长序列长度动态规划实现,以下求状态转移方程状态dp[i]:第i个元素作为递增子序列结尾时,子序列的长度注意:nums[I]作为递增子序列结尾,则该子序列前的元素一定小于nums[i]转移方程需要满足两个条件:1、子序列递增 2、新子序列结尾元素为nums[i]已知:dp[j] (0

2021-11-25 20:47:30 503

原创 2021-11-24 leetcode 动态规划 516.最长回文子序列 c++

题目leetcode 516.最长回文子序列思路动态规划状态dp[i][j]:字符串s下标范围[i,j]内的最长回文子序列长度注意:下标范围为[i, j],意味着只有i <= j 的情况下dp[i][j]才有意义,否则dp[i][j] = 0转移方程状态转移方程都是从长度较短的子序列向长度较长的子序列转移对 i <= j 进行分类讨论:(1)i == j 时此时子串中只有一个字符,一定是回文子串,因此dp[i][j] = 1(2)i < j 时对于一个新的范围

2021-11-24 21:55:25 513

原创 2021-11-22 leetcode 动态规划 221.最大正方形 c++

题目leetcode 221.最大正方形示例如下图所示,所能找到的最大正方形边长为1,面积为4思路思路引入一个最小的正方形(除自己一个格子以外)由四个格子组成。从右下角的视角来看,组成这个正方形需要:当前格,上方,左方,左上方格子值都为1当前格、上、左、左上都不能受 0 的限制,才能成为上述正方形类似于木桶效应,当前格结合附近格能组成的最大正方形边长取决于附近的最小边长如果附近格边长都为0,则该格能组成的最大正方形边长则为1(当然在该格为1的前提下)具体实现动态规划状态转移方程

2021-11-22 21:25:39 936

原创 2021-11-20 leetcode 动态规划 64.最小路径和 c++

题目leetcode 64.最小路径和//Dr.He,这竟然是滴滴面试题思路动态规划状态转移方程的定义dp[i][j]:从Start(左上角)到位置(i,j)(第i行第j列的元素)的最小路径和状态转移方程对于不同位置求法不同,具体分为以下4种情况:i) (0,0),即终点就在Start位置时dp[0][0] = grid[0][0]ii)(I,0),即位于左边界时当前位置最小路径和为上一行元素的最小路径和 + 当前路径值dp[i][0] = dp[i - 1][0] + grid

2021-11-20 20:00:11 280

原创 2021-11-20 leetcode 动态规划 63.不同路径2 c++

题目leetcode 63.不同路径2示例:从矩阵左上角Start到矩阵右下角Finish,只能向下或者向右移动,且需要绕开障碍物。求从Start到Finish的不同路径总数思路动态规划和62.不同路径类似,只是需要避开障碍物,即从Start经过障碍物到Finish的路径数为0.定义状态转移方程在m x n 的矩阵网格中,对于第i行第j列的位置(i, j)dp[i][j] 表示:从Start到(i, j)的不同路径数若位置(x, y)表障碍物,则dp[x][y] = 0求状态转移

2021-11-20 19:45:45 519

原创 2021-11-19 leetcode 动态规划 62.不同路径 c++

题目leetcode 62.不同路径示例Q:只能向下或向右走,求从Start到Finish的不同路径数思路动态规划定义状态转移方程在m x n 的矩阵网格中,对于第i行第j列的位置(i, j)dp[i][j] 表示:从Start到(i, j)的不同路径数求状态转移方程只能从(i , j)的左边和上边这两个位置到达(i, j)。这两个位置分别是(i, j - 1) 和 (i - 1, j)。则从Start到(I, j)会经过(i, j - 1) 或 (i - 1, j),就形成了两种

2021-11-19 19:12:53 256

原创 2021-11-18 leetcode动态规划 120. 三角形最小路径和 c++

题目120. 三角形最小路径和题目解释如下图所示:圆中的数字j表示该圆对应的列数则triangle[i][j] 表示第I行第j列元素值自上而下出发:从(i,j)向下走,两种情况:(I+1,j) 或者 (i+1,j+1) 的位置Q:求从上到下的最小路径思路动态规划定义状态转移方程dp[i][j]: 在第i行第j列时的最小路径状态转移方程当前最小路径 = 上一层的最小路径 + 当前路径值则求上一次路径的最小值,即求上次选择的哪个一个位置对于现在的位置(i,j),上一个位置在

2021-11-18 21:02:44 654

原创 2021-11-17 leetcode 动态规划 931.下降路径最小和 c++

题目leetcode 931.下降路径最小和Q: 在n*n的方形矩阵中,只能从该列或相邻的列走,求从第0行到第n-1行最小和思路动态规划定义状态转移方程dp[i][j] :走到第i行第j列时的最小路径和在第i行第j列时的最小路径和 = 在第i - 1行第j列 或相邻两列的最小路径和 + 当前位置值现所处的不同位置决定不同的状态转移方程,因此对现位置分类讨论(i,j)表示所处位置为第i行第j列i)当位于靠左边界时,则不存在更左边一列,即此时的最小路径只能来源于第i - 1行的第j列和第j

2021-11-17 20:50:43 645

原创 2021-11-16 leetcode动态规划 96.不同的二叉搜索树 c++

题目leetcode 96. 不同的二叉搜索树二叉搜索树二叉搜索树一棵搜索二叉树的两种情况:i) 空树ii) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值题目要素已知有序序列 1⋯n,求可构建出的不同二叉搜索树的种数思路求不同种类的二叉搜索树需要保证两个方面:二叉树的特性和不同搜索二叉树的唯一性解释:二叉树的特性:左子树结点值小于根结点值,右子树结点值大于根结点值;唯一性:每个搜索二叉树都不一样如何

2021-11-16 20:32:06 790

原创 2021-11-14 leetcode 动态规划 91.解码方法 c++

题目leetcode 91.解码方法In a brief: 将一串数字拆按不同方式拆分,但拆分后的个体的值的区间为1~26,求总拆分方法数。思路动态规划定义已知:字符串str[0…i…n]dp[i] :对于str[0…i]的字符串,所得解码的总数求dp[i]首先分析str[i],可能值为:‘0’, ‘1’, ‘2’解码总数取决于s tr[i]不同的取值,因此,对str[i]进行分类讨论:i) str[i] == '0’只有一个字符 '0’时,无法单独被解码。需要联系前面的一个字符。

2021-11-14 19:37:58 845

原创 2021-11-11 leetcode动态规划 309.最 佳买卖股票时机含冷冻期 c++

题目leetcode 309.最佳买卖股票时机含冷冻期重点第i天卖出股票,则第i+1天不允许买股票。此题和leetcode 714.买卖股票的最佳时机含手续费类似,但将手中无股票的状态进一步细分。思路动态规划以下确定状态转移方程定义重点转移至股票卖出那一天,而非冷冻期。第i天能买股票取决于第i-1天是否卖出。(1)手中有股票的情况dp[i][0] 第i天交易完成时,手中有股票的情况下所获得的利益最大值(2)手中没有股票的情况dp[i][1] 在第i-1天手中本来就没有股票,使得第

2021-11-12 18:50:50 753

原创 2021-11-11 leetcode 动态规划 413.等差数列划分 c++

题目leetcode 413.等差数列划分题目要素给出数组nums,求其中长度>=3的等差且连续子数组个数思路差分 + 计数如何判断nums数组中元素是否连续?若nums[I] - nums[I-1] == nums[I-1] - nums[I-2],则nums[I],nums[I-1],nums[I-2]为连续元素,反之则不连续如何求连续等差数组中子数组个数?初始化:计数器cnt = 0,等差且连续子数组个数res = 0;若nums=[1,2,3],即长度为3的等差数组

2021-11-11 18:23:25 579

原创 2021-11-09 leetcode 动态规划 714.买卖股票的最 佳时机含手续费 c++

题目 leetcode 714.买卖股票的最佳时机含手续费和

2021-11-09 19:12:50 725

空空如也

空空如也

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

TA关注的人

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