自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划和分治法的思路

在我理解,上面的三种方式都是面对问题时的解决思路,这个思路非常重要。因为思路并不是针对某一个问题,而是某一类问题。在面对很多问题时,如果能够尝试用这几种思路去思考,会更容易、更顺利地解决问题。,这一点从其递归关系式和状态转移方程可以看出来。这也是我在前文说到的,分治法与动态规划有交集的一种情况的具体体现。其中递归法与分治法的解法是一样的,那么我们用迭代法来实现动态规划的思路。根据动态规划和分治法的思路,其解决方案大致是一样的。一般来说,我们在实战经验积累中很容易发现,那么,实现动态规划的方式一共有两种。

2025-09-30 08:13:01 204

原创 青蛙跳台阶的问题引出的算法分析

首先,当青蛙在面对第一个台阶时,他只有两种选择 —— 跳一步还是跳两步。下面再谈谈如何解决,正如上面谈到的解决步骤,如果规模足够小那么直接返回,否则继续降低规模进行递归求解。这时,就是我们要确定边界条件——即当 n = 1 和 n = 2 时的情况。其中 f(n-1) 是青蛙选择跳一步后,剩下的子问题,同理 f(n-2) 是青蛙选择跳两步后剩下的子问题。这样,我们就把问题进行了分解。一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。在明确了边界条件后,合并就非常的简单,也就是简单的相加即可。

2025-09-27 09:22:22 285

原创 「正则表达式」之初来乍到

NPC: "欢迎来到正则表达式的国度,勇士!这里的每一个人都使用正则表达式,我是这里的 NPC,每一个来到这里的人都将由我代为介绍正则世界的规则,至于能领悟到何种境界,就看你的造化了。你还没有听过正则表达式,真是一个莽撞的小伙子。看来你也和外面世界的人一样,每次只有用到。时,才会通过「谷鸽」来我们的国度寻找答案。一群知其然不知其所以然的家伙。你:"啊,好的,正则表达式......有点奇怪的名字,它是什么呢?正则表达式:用来匹配一系列符合某个规则的字符串的表达式。,NPC 缓缓说道。

2025-09-24 10:22:24 304

原创 算法常考题:描述假设检验的过程

(hypothesis testing),又称统计假设检验,是用来判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的统计推断方法。设置原假设和备择假设,选定显著水平(significance level);计算检定统计量(test statistic),并据此计算 p 值;检查假设是否满足,并据此选择合适的检验方法;根据 p 值计算得出结论。

2025-09-19 21:34:03 217

原创 二分法求x 的平方根

一个数的平方根肯定不会超过它自己,不过直觉还告诉我们,一个数的平方根最多不会超过它的一半,例如 8 的平方根,8 的一半是 4, 4的平方 = 16 > 8,如果这个数越大越是如此,因此我们要计算一下,这个边界是多少。:使用二分法搜索平方根的思想很简单,就类似于小时候我们看的电视节目中的“猜价格”游戏,高了就往低了猜,低了就往高了猜,范围越来越小。因此,使用二分法猜算术平方根就很自然。于是边界值就是 4,那么对 0、1、2、3 分别计算结果,很容易知道,这 4 个数的平方根依次是 0、1、1、1。

2025-09-16 11:17:18 360

原创 数据库中悲观锁小结

表锁则为给一个表加上锁(如果是 X 锁则类似于为了更换博客系统而将整个博客下线了),通常用在 DDL 语句中,如 DELETE TABLE,ALTER TABLE 等,由于表锁影响整个表的数据,并发性不如行锁好。另外,在只读型事务处理中由于不会产生冲突,也没必要使用锁,这样做只能增加系统负载;还有会降低了并行性,一个事务如果锁定了某行数据,其他事务就必须等待该事务处理完才可以处理那行数据。但是在效率方面,处理加锁的机制会让数据库产生额外的开销,还有增加产生死锁的机会;

2025-09-13 21:04:35 257

原创 遍历墙的高度与栈的对比

说到栈,我们肯定会想到括号匹配了。我们仔细观察蓝色的部分,可以和括号匹配类比下。每次匹配出一对括号(找到对应的一堵墙),就计算这两堵墙中的水。如果当前高度大于栈顶的墙的高度,说明之前的积水到这里停下,我们可以计算下有多少积水了。计算完,就把当前的墙继续入栈,作为新的积水的墙。当遍历墙的高度的时候,如果当前高度小于栈顶的墙高度,说明这里会有积水,我们将墙的高度的下标入栈。指向的高度小于栈顶高度,我们用栈保存每堵墙。

2025-09-08 11:58:23 254

原创 GitHub使用小技巧之commit签名

如何保证一个 commit 确实是本人作出的?在 GitHub 上协作的时候如果你拥有了一个人的 SSH Key,或者 GitHub 登录信息,即可以他的身份创建 commit,为了证明某一个 commit 确实是本人做出的,我们可以用自己的 PGP 私钥对 commit 进行签名。即可对 commit 进行签名。如果在 GitHub 设置中添加过自己的 PGP 公钥的话,此时 GitHub 上已经签名的 commit 可以看到一个标识。

2025-09-05 11:57:38 227

原创 分块法求子数组中占绝大多数的元素

针对不同的询问区间长度,使用两种不同的方法。

2025-09-03 11:44:15 138

原创 凯撒密码法(Caesar cipher)

凯撒密码就是最早由凯撒大帝使用的军事加密方法。对于一段写好的文字,把每个字母改写成字母表中比它靠后三位的字母即可。当然,字母表的挪移位数可以是 1 到 25 中间的任何数,你可以选取一个对方喜欢的或有纪念意义的数字作为移位数。凯撒密码极易被破解,但是足够简单,适合私密发送简短信息。

2025-08-31 08:53:22 780

原创 MySQL中的InnoDB

由于 InnoDB 利用的数据库主键作为索引 Key,所以 InnoDB 数据表文件本身就是主索引,且因为 InnoDB 数据文件需要按照主键聚集,所以使用 InnoDB 作为数据引擎的表需要有个主键,如果没有显式指定的话 MySQL 会尝试自动选择一个可以唯一标识数据的列作为主键,如果无法找到,则会生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。如你所知,对于InnoDB 来说,表数据文件本身就是按 B+Tree 组织的一个索引结构,这棵树的叶节点 data 域保存了完整的数据记录。

2025-08-27 16:27:14 151

原创 用栈实现队列的示例与解决方法

在上面的介绍中我们得知队列是一种先进先出(first in - first out, FIFO)的数据结构,队列中的元素都从后端(rear)入队(push),从前端(front)出队(pop)。(last in - first out, LIFO)的数据结构,栈中元素从栈顶(top)压入(push),也从栈顶弹出(pop)。为了满足队列的 FIFO 的特性,我们需要用到两个栈,用它们其中一个来反转元素的入队顺序,用另一个来存储元素的最终顺序。

2025-08-25 16:19:34 270

原创 二叉搜索树的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

2025-08-22 11:45:14 146

原创 递归算法N皇后最优解

如你所知,历史上有一个著名的问题:八皇后问题,题目大意如下:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?2、如果在第 n 列出现死胡同,如果该列为第一列,棋局失败,否则后退到上一列,在进行回溯;1、从第一列开始,为皇后找到安全位置,然后跳到下一列;3、如果在第 8 列上找到了安全位置,则棋局成功。这道题本质是考察对于。

2025-08-21 15:19:19 210

原创 Quartus Prime 18.1网盘资源下载与安装指南

如大家所熟悉的,是英特尔开发的一款多平台设计软件,支持FPGA、CPLD和SoC 设计,涵盖从设计输入、编译、优化到验证的全流程。目前常用的版本是Quartus 18.1,深受使用者的喜爱!

2025-08-19 12:07:18 1166

原创 BAT高频面试题 | 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。该办法效率太低,所以力扣测试用例只能通过 46 个,后续的会超出时间限制。菜鸡的我第一想法只能想到。,遍历各种可能结果。

2025-08-18 15:05:07 198

原创 代码实现两个有序数组的中位数

如何找边界值,我们可以用二分法,我们先确定 num1 取 m1 个数的左半边,那么 num2 取 m2 = (m+n+1)/2 - m1 的左半边,找到合适的 m1,就用二分法找。当我们只需要比较b3和a2的关系的大小,就可以知道这种分法是不是准确的!当,它的中位数就是对于代码中边界情况,大家需要自己琢磨。

2025-08-18 11:56:36 238

原创 损失函数的最优解问题

如你所知,损失函数,英文里叫 Loss Function,是用来衡量一个机器学习模型的预测值和真实值之间的差距的,这种差距也可以称作损失。损失值的大小与模型的参数是直接相关的,因为参数决定了模型预测出来的结果。这个参数就是科学家们想要求解的,这类问题被统称为求最优解的问题或者优化问题。但是求解是一个很麻烦的过程,如果损失函数过于复杂,很可能求很久也求不到想要的结果。没错,如果损失函数「就像这个碗,它又大又圆」,那么我们很容易就能发现,这个损失函数的最低点有且只有一个,就是碗底。

2025-08-17 16:51:25 251

原创 如何用代码能搭建一个女朋友?(四)

算了,不管了,一个简单的女朋友已经做好了,仔细想想,自己做的女朋友又温柔又对自己口味,再搭配一个女神的照片当作头像,还找啥对象?建议广大单身的程序员同胞们都上手做一个,即便每天都刷力扣,女朋友也不会跟你分手。这里我用了自己的微信号,找了朋友帮我测试。朋友是一个一米九的高大汉子,看着这段对话我总感觉哪里不对劲。当然现在的女朋友还不够智能,下一阶段我们会尝试使用 NLP 相关技巧让女朋友智能起来。

2025-08-08 15:56:57 251

原创 如何用代码能搭建一个女朋友?(三)

改为 True,避免回复别人消息的时候重复调用函数。在函数里遍历规则列表,匹配成功后返回指定的相应,如果全都没匹配到就返回事先定义好的一个默认回复。

2025-08-08 08:35:07 4916

原创 如何用代码能搭建一个女朋友?(二)

或者自己发来的,并且是文本类的消息时才会调用,同时允许发消息给自己,方便调试。确保再缓存当中保持登录状态,避免重复登录,毕竟女朋友不能经常掉线嘛。方法进行回复,现在我只是简单的让女朋友把我说的话重复了一遍。框架很好用,简单介绍一下,Bot 实例生成时的属性。在当前案例中会返回一个用户对象,再调用该对象的。参数中,1 表示男性,2表示女性。的作用是指明它下面的函数。上一篇文章,我们讲到了。先来搭建一个女友的框架。

2025-08-07 15:24:17 273

原创 如何用代码能搭建一个女朋友?(一)

现阶段我们只需要实现一个 rule-based 的女友,其他 NLP 或者 ML/DL 库暂时不需要。是一个封装好的微信个人号接口,在 itchat 的基础上,通过大量接口优化提升了模块的易用性。你需要一个 Python 3+ 版本,用包管理工具或者 Docker 安装好。另外你还需要一个编辑器,这个就不多做介绍了。2.从豆瓣 PYPI 镜像源下载安装 (

2025-08-07 10:42:30 237

原创 程序员面试时HR如何验证你的项目经验和技术?

一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。而且这些是你实际的项目经验,一旦让面试官感觉你都说不上来,那么可信度就很低了。不少人是拘泥于“项目里做了什么业务,以及代码实现的细节”,这就相当于把后续提问权直接交给面试官。在面试时,面试官无法知道你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。所以,一定要对自己简历上的项目熟悉!准备项目的各种细节,一旦被问倒了,就说明你没做过。

2025-08-06 14:59:26 191

原创 程序员面试的加分项有哪些?

因此,及时把自己目前现有的想法跟面试官沟通,询问对方自己思路的问题,并寻求一些提示等等,这都是面对困难时候积极的态度,也能够给面试官留下比较好的印象。,想必这句话很多同学都听过。GitHub上面的代码能够最直观的看到你的编程风格和能力,面试官在背调的时候可以通过你的代码结构,更深入的了解你,好的编程规范会在面试前就留下一个很好的印象。了解自己领域的新技术或者算法在经过一轮的代码或者算法面试后,面试官很可能会想看看你是否是真正有技术热情,可能会问你,在你所面试的领域的最新技术或者最新的论文,你有多少的了解。

2025-08-06 08:50:52 199

原创 浮雕软件Artcam安装包百度云网盘下载与安装指南

如你所知,是一款专业的CAD/CAM软件工具,主要用于三维浮雕设计、珠宝加工及CNC数控雕刻,可将二维构思快速转化为三维艺术产品,深受使用者的喜爱。

2025-08-05 17:31:45 1692

原创 三维软件Inventor安装包百度云网盘下载与安装指南

如大家所熟悉的,Autodesk Inventor主要应用于机械设计与工程领域,适用于制造业、汽车、航空航天、电子等行业的三维建模与数字样机开发,深受使用者的喜爱。

2025-08-05 12:59:46 1617

原创 最大似然估计的计算

在机器学习领域我们实际上更经常遇到的是数据服从某种连续分布(如高斯分布),且参数无限的情况。得到似然函数后,为了便于计算,经常要取该函数的对数。求解这种对数似然函数的最大值是一个最优化问题,常用的方法包括梯度下降法,牛顿法等。最大似然估计法在许多机器学习经典模型(如线性回归,逻辑回归)中都有应用。欢迎关注力扣的机器学习专栏,我们会在专栏中奉上其具体的应用细节。之前我们讲的都是投硬币的例子,属于离散分布中的二项分布。对于离散分布,参数离散且有限的情况下,我们确实可以逐一带入尝试,找到最优解。

2025-08-04 08:32:32 346

原创 人工智能篇之计算机视觉

得益于神经网络和深度学习的快速发展,计算机视觉技术得到了长足的发展。全球的计算机视觉产业发展迅速,相关产品在工业界的落地比 NLP 以及知识图谱更加成熟,在安防、金融、互联网、零售、医疗以及娱乐等产业都有了比较成熟的落地产品。它的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样。就业:相比于前两个领域,计算机视觉领域相对而言更加成熟,对人才要求也更高更专。就业范围的广阔性上可能不如 NLP 和知识图谱,但在探索的深度上,是有优势的。

2025-08-02 13:48:56 344

原创 Vim与VS Code

其实这个本身不是 IDE (只有在加入和配置了合适的插件之后才是),但是由于是 Vim 老用户,还是必须得说道说道,Vim 本身只是一个文本编辑器,但是由于各种插件的加持可以让它在各个领域发光发热。

2025-07-29 11:54:02 456

原创 递归算法的一些具体应用

斐波那契数列(Fibonacci sequence)是以意大利数学家莱昂纳多·斐波那契命名的数列,其特点是每一项等于前两项之和,通常表示为F(0)=0、F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2),数列形式为0、1、1、2、3、5、8、13、21、34……不可否认,许多公司的面试中都会或多或少涉及到一些算法相关的概念,下面我们来看两个示例,更好的理解递归算法的应用。这个应该是非常简单的一个递归的应用了,对于许多高校中将 C 语言的时候一般都会提及,表达式为。

2025-07-28 20:45:21 260

原创 经典集成开发环境之Dev C++

参加某次程序设计比赛时候官方提供的 IDE,和 C-Free 很像,界面非常简洁,使用的 TDM-GCC 编译器,不会像 VC++ 6.0 一样遇到各种无法解释的问题。(或者叫作Dev-Cpp)是Windows环境下的一个轻量级C/C++集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。

2025-07-27 09:46:45 262

原创 C语言开发工具Win-TC

该软件使用 turbo C2 为内核,提供 WINDOWS 平台的开发界面,因此也就支持 WINDOWS 平台下的功能,例如剪切、复制、粘贴和查找替换等。而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。是一个turbo C2 WINDOWS 平台开发工具,最大特点是支持中文界面,支持鼠标操作,程序段复制,为初学 c 语言、对高等编程环境不熟悉的同志们非常有帮助。一个比较罕见的 IDE,个人仅仅见过一次,当时在使用 Turbo C 的程序员们可能会留下一些印象。

2025-07-26 21:22:02 236

原创 如何正确地统计到种类个数

我们对题目做一点改变,由于传感器有一个误差的区间,对于所有可能的种类我们允许它最多出现两次,认为是不同的两个种类,这样的话问题该如何解决呢?这样的话我们又可以正确地统计到种类个数了。

2025-07-24 15:44:28 139

原创 经典算法题之最短回文串

本题目可以转换为求给定字符串从首字母开始的最长回文子串(然后将余下的 reverse,insert 到头部就可以),而求从首字母开始的最长回文子串,可以用 Manacher 算法,也可以将 str 反转以后拼接到 str 尾部,使用 KMP 的求 next 数组,这样 next 数组最后一个值就是从首字母出发的最长回文子串长度。:使用 Manacher 和 KMP, Manacher 算法是求最长回文子串中非常漂亮的算法了。希望本篇文章对大家解题有帮助,如有更好的题解欢迎在评论中分享交流~

2025-07-22 08:13:34 140

原创 经典算法题之完全平方数

常规思路是使用动规解决(大家的讨论也都是围绕 DP 进行的),但是如果你了解一个定理:四平方和定理:任一个正整数都能拆成四个整数的平方和;//详见2016年蓝桥杯省赛真题《四平方和》,这个问题就可以很快解决,速度快得超群。题,对应有题解,有的题解运行速度快,构思巧妙,有的题解循环次数太多,运行速度慢。各花入各眼,希望大家解题愉快!

2025-07-21 16:19:16 158

原创 Python学习之存数据

在得到了对应的数据之后可以考虑用文件或者数据库的方式把内容持久化下来方便之后的分析,此时可以使用。库,寥寥几行代码,数据就已经很好地存储下来。(此处可参考我们之前发的文章)

2025-07-20 09:20:39 239

原创 浅谈Rust语言特性

单线程下是对的,也许多线程就错了。要知道你可能从前写好了基础库,没有完整测试它在高并发下的表现,继续用可能就出错了(数据错误、内存访问错误)。是一种由Mozilla开发的系统编程语言,专注于内存安全、并发性和高性能,旨在替代C/C++等传统系统编程语言。Rust 提供大量默认的标准库。上面的代码中,就第一行,就 use 了一堆模块,这一点和 Python 的。对 Rust 来说,编译器保证指出你的错误,对 C++ 来说,编译器没有这种保证,它也无法保证。内存安全和保证(安全的操作与不安全的操作)

2025-07-19 11:35:01 371

原创 如何防止GitHub上的敏感信息被泄漏?

当我们发现了历史 commit 中包含敏感信息后,第一步便是如何移除掉,由于 Git 是版本控制系统,直接删除文件重新 commit 就不要指望了,最简单的方法是使用一个工具——BFG。如大家所了解的,随着GitHub的用户越来越多,GitHub上的敏感信息被泄漏的问题也越来越严重。那么如何做,才能防止此类事情发生呢?上文中给出了发现和移除的方法,但是这些仅仅是补救措施,我们在日常 Git 使用途中应该从哪些方面考虑来减少这类事件的发生呢?好了,今天的文章分享就到这里了,大家是否有收获呢?

2025-07-18 18:46:02 415

原创 哈希表法求环形链表

我们遍历所有结点并在哈希表中存储每个结点的引用(或内存地址)。如果当前结点为空结点 null(即已检测到链表尾部的下一个结点),那么我们已经遍历完整个链表,并且该链表不是环形链表。如果当前结点的引用已经存在于哈希表中,那么返回 true(即该链表为环形链表)。实际上,我们可以通过检查一个结点此前是否被访问过来判断链表是否为环形链表。常用的方法是使用哈希表。

2025-07-17 18:31:56 246

原创 一次遍历法求解买卖的最佳时机

使我们感兴趣的点是上图中的峰和谷。我们需要找到最小的谷之后的最大的峰。我们可以维持两个变量——minprice 和 maxprofit,它们分别对应迄今为止所得到的最小的谷值和最大的利润(卖出价格与最低价格之间的最大差值)。

2025-07-17 10:59:21 219

空空如也

空空如也

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

TA关注的人

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