自定义博客皮肤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)
  • 收藏
  • 关注

原创 python使用概率算法模拟寻找伴侣

假设n位候选人的水平用n个不同的数值表示,数值越大表示其水平则越高,问题在于,这n位候选人会以随机次序出现在面前,当某位候选人出现在面前的时候但是不选择这个人,那么对方就会一去不返了,要以何种的选择策略来选中水平最高的那个人呢,这个在算法当中被称为最优停止问题,通常的做法是选定一个数值r,然后对于前r-1位候选人,只看不选的话,记录下前r-1位候选人的最高水平数值,从第r位开始做选择,一旦发现了能力值大于或者等于前r-1位候选人的最高水平的时候就选择这个人。添加图片注释,不超过 140 字(可选)

2024-04-11 21:24:03 341

原创 随机信号变量的分析应用实例

这里问题主要是在于P(N=k),也就是正好会有k个人拿到自己的帽子的概率计算起来会非常的麻烦,而这里如果说使用随机信号变量来解决这个问题,那分析就会变得简单很多。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-03-28 20:42:27 433

原创 随机信号变量

概率论分析过程当中,要涉及多个随机变量的高绿,其难点在于变量之间可能会存在相互影响的时候,例如,当考虑一个人的体重的时候,人的性别就是一个相关的因素,这种多种因素会存在相互耦合影响的情况,然后使得概率分析变得非常的复杂。由此可见,使用随机信号变量来分析某些概率问题能够大大的简化问题的复杂性。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-03-26 22:34:23 303

原创 使用python实现布丰投针法

对于π的值,直到1946年的时候,人类才能将π的值精确计算到小数点后2037位,而现在的超级计算机的能力可以精确的计算到小数点后几十亿位,然而在计算机发明之前,还是使用这里的布丰投针法来计算π值,是最实用的方法。

2024-03-24 21:25:19 355

原创 使用布丰投针法精确计算圆周率

对于式子中分子的前半部分表示的是铁针与直线所相交的概率,这个值是可以通过简单的实验方式来得到的,例如,随机投针M次,记录其中针会与线相交的次数是N,那么N/M就可以代替上述分子中的前半部分来进行运算,从而同样也可以解出π的值,而这里也就可以显示出当M越大的时候,所得到的π的值也就越精确。如果在平面上有两条距离为d的平行线,假设如果拿一根长度是L的铁针随机的丢到纸面上去,那么试问铁针与某条直线所相交的概率是多少,假设铁针的长度L是大于平行线的距离d的,这样铁针就不会同时与两条直线所相交了。

2024-03-21 23:07:34 190

原创 强森算法求两点最短路径的基本流程及代码实现

而在运行贝尔曼-福德算法的过程中如果发现给定的图存在负数环,那么就要停止后续的计算,因为含有负数的环的图不存在最短路径,而如果给定的图是不存在负数的环的,那么此时就已经得到了s到所有节点的最短路径,那么使用公式来修改每条边的长度,由此就可以将图中的所有负数的边都修正成为正数的边。对于强森算法,给定的一个图中,算法首先会构造一个新的节点s,然后从新构造的这个节点引出多条边分别连通图中的每一个节点,这些边的长度一开始是被设置为0的,然后使用贝尔曼-福德算法进行计算,算出从s到图中每一个节点的最短路径。

2024-03-20 22:43:40 280

原创 使用强森算法求任意两点之间最短路径

对于强森算法的算法思想,如果给定的图中是没有负数的边,那么就可以使用迪杰斯特拉算法来进行遍历每个节点,找到它与其他节点的最短路径,而如果给定的图中是存在负数的边,但是不存在负数的环的时候,那么就可以使用算法对边长做一些修改并且可以准确的找到给定的两个节点之间的最短路径。对于给定的任意的一个图,增加一个新节点s,然后对原来的图中每个节点v,增加新的边(s,v),并且把这些边的长度都设置为0之后,由于对任何节点v,都会存在一条边(s,v)使得从s都可以抵达v,因此从s到任意节点v的最短路径都是一定存在的。

2024-03-19 22:39:09 204

原创 弗洛伊德-华沙算法案例及实现

对于弗洛伊德-华沙算法代码实现,使用如下的例子作为算法运行的例子:添加图片注释,不超过 140 字(可选)先使用代码并配合适当的数据结构将图中节点vertex_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] #记录图中所有节点 edge_vertex = {} #记录相连节点 edge_vertex[0] = [1] edge_vertex[1] = [7] edge_vertex[2] = [1, 5] edge_vertex[3] = [2, 4] edge_ver

2024-03-18 21:18:24 844

原创 弗洛伊德-华沙算法求任意两点之间的最短路径算法

对于弗洛伊德-华沙算法首先是要假设研究的图中是不包含有负边的,对于所给的图中的任意亮点v1,vm,假设两点之间存在一条连通路径,对于该路径中去掉头和尾节点,也就是v1,vm,剩下的节点也就称之为这条路径的过渡节点。对于给定的任意亮点v1和vm,如果他们之间相互连通,那么从节点v1开始,就可以找到至少一条以上v1路径抵达vm的路径,假设所有路径中对应节点最大编号是为k,那么也就是知道如果遍历所有从v1出发最终抵达vm的路径,组成这些路径的节点没有一个编号是能够超过k的。

2024-03-17 20:20:33 453

原创 python实现卡普均值最小回路算法

如果给定一个含有环的有向图,要在这个图中找出所有的环并计算这些环的路径长度,然后除以环的边数,所得到的结果也就是环的平均值,这里也就是如何计算这个环的最小均值问题。从图中可以计算出由虚线构成的环的均值是最小的,添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-03-13 22:50:40 461

原创 对贝尔曼福德算法进行改进

图中的节点包含数字表示节点所对应的编号,此时将图中的边进行分组,分为两组,第一组边的起点编号是小于终点编号的,第二组边的起点编号是大于终点编号的,(A,B)(A,E)(B,C)(B,F)以及(C,B)(D,C)(F,D)(F,C)(E,F)两组。考虑相邻两条边出现反转的情况,也就是上一条边位于改造后图的上方,下一条边位于改造后图的中间或者下方,或者是上一条边位于改造后的图的中间或者下方,下一条边位于改造后图的上方。添加图片注释,不超过 140 字(可选)相对于原来的说,效率就改进了一倍的情况。

2024-03-11 22:07:32 371

原创 对simplex算法的时间复杂度进行分析

当目标函数中不存在变量系数大于0的变量的时候,就是算法结束了,因此只要进行了多少次的pivot变换就能够使得目标函数不存在系数大于0的变量的时候,就可以确定算法的时间复杂度了,这里要想确定执行了多少次的pivot变换,一个定理成立,这个定理就是假设有n个变量,从x1到xn,I是变量下标的集合,I={1,2,3,...n}对于两组各自含有n各元素的实数集合a1到an,b1到bn,同时r表示任意的实数的时候,如果无论n个变量是如何取值的,对于。次pivot变换之后才会结束,或者算法就会存在永远不会结束的情况。

2024-03-08 22:03:20 426

原创 对于simplex算法的代码实现最优解存在性的证明

对于任何线性规划系统,并不是都存在最优解,如果在约束条件中,每个常量都是大于等于0的,那么线性规划系统肯定是有最优解的,此时将每个变量选取为0就可以了。这里就注意到此时的目标函数中已经没有变量对应的系数是大于0的了,因此这个时候的算法结束了,所有的非基本元取值为0,基本元取值约束中的常量,于是就有x0=4,这就与要求中的必须存在x0=0会相矛盾,于是也就证明了给定的线性规划系统是不存在最优解的。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-03-07 21:46:31 398

原创 simplex算法的代码实现

最后一个约束条件让x1的增加值最少,选择最后一个约束条件进行下一步变换,转入变量对应x1,转出变量对应x6,而x1在三个约束条件中对应的系数处于矩阵A的第一列,代码含中的输入变量x1=0,变量x6下标对应B[2],因此e=2。对于此时的基本元的下标是4,5,6,因此变量B所对应的内容是B={4,5,6},同理非基本元的下标是1,2,3,在约束条件中非基本元对应的系数相反数集合为。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-03-06 22:47:56 351

原创 如何证明线性规划系统最优解存在性

上图是线性规划算法的基本流程描述,但是给定的基本流程描述中的一些步骤还需要进一步的进行分解,第一步是如何将线性规划系统依靠算法的步骤现转换为标准型的线性规划系统,然后进行判断,主要是判断给定的这个线性规划系统是否存在最优解,如果最优解存在的话,那就要去找到线性规划系统的基本解。一旦确认原系统存在可行解之后,就能从所有可行解中找到让目标函数最大化的解,于是原系统就存在最优解。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-03-04 21:53:01 475

原创 高斯消元法的应用

然后再不破坏约束条件的情况下,尽可能增加它的值,在x1增加时有可能会导致其他变量减少,但在约束条件中要求所有变量都必须要大于0,因此x1不能无限制的增加,从第一个约束条件可以看出,当x1增加超过20的时候变量x3就会变得小于0了,根据第二个约束条件可以看出,当x1增加超过1的时候,x4就会变得小于0了,由此可以确定x1的增加不能超过1。这一个变换的过程也就叫做pivot变换,这个与变换前的线性规划系统对应目标函数带入基本解后的结果是一样的。添加图片注释,不超过 140 字(可选)

2024-03-03 22:57:58 395

原创 线性规划问题的高斯消元法

对于给定的线性方程组,目的是将方程组中同时能够满足三个等式的变量x,y,z求解出来,对于高斯消元法的基本过程主要分为三个步骤,第一就是需要调整方程组中的方程的位置,第二就是要将一个非零常数同时乘以某个方程等号的两边,第三就是将一个方程乘以一个常数之后加上另一个方程,使用这三个步骤对如上给定的方程组进行解方程组的步骤。此时的第二个方程中xy的系数都是0,这也就说明他们的作用在该方程中是为了被消除的,此时就可以从方程2中得到z的值是-4/5,最后再把yz的值带入到方程1中得到x的值是-1/5。

2024-03-02 21:25:08 356

原创 线性规划在多种问题形式下的应用

在图论中还存在一种称为极大流的问题,如果给定一个有向图G,其中有一个起点和一个终点,在两者之间存在很多中间点,同时点与点之间的连接存在一个容量上限,问题是从起点开始发出多少流量,这些流量分流到各个支路后,最终汇合到终点,试问起点能够发出的流量最大是多少。而这里要注意的是问题所需要求的是最短路径,按照目标函数应该是查找最小值才对,但是这里是查找的最大值,因为如果查找最小值,那么问题的答案就是将所有变量设置为0,而这就与所需要的目标是不相符的。添加图片注释,不超过 140 字(可选)

2024-03-01 23:05:55 389

原创 线性规划的标准型转换

首先目标函数是求最小值,可以添加一个符号在目标函数前面转换成为求最大值,同时第二个约束条件是大于等于,因此在不等式的两边添加一个符号就会变成了小于等于,最后就是还需要再转换一个约束条件,那就是让所有变量都大于等于0,目前在约束条件只有x1>=0,但是对于x2是没有相应的约束的。对于以上的线性规划的系统当中,在等号的约束条件中等号左边的变量叫做基本元,等号右边的变量叫做非基本元,而且在实现的算法运行的过程当中,基本元和非基本元会不断地产生变化。添加图片注释,不超过 140 字(可选)

2024-02-29 22:33:45 636

原创 线性规划基础

利用一个简单的实例来介绍什么事线性规划,假设如果有一家巧克力工厂需要生产两种不同类型的巧克力,分别是类型A和类型B,两种巧克力用到的原材料是一样的,都是使用牛奶和可可两种材料,主要的区别是在与这两种原料的配料比区别,而对于类型A巧克力,生产一单位的巧克力会需要两单元的牛奶和三单元的可可,而对于类型B巧克力,生产一单元的巧克力会需要1单元的牛奶和2单元的可可。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-28 21:59:04 362

原创 python实现最短路径

上图中的每个节点都代表了一个城市,节点间的连线的数值就是对应的城市之间的路径的长短距离,假设邮差从节点1出发,如何用最短的距离遍历每个节点然后回到节点1,同时要求每个节点最多被遍历一次,这也就是所谓的NP问完全问题,无论计算机运行有多快,只要问题的规模稍微变大一些,就会导致计算机的算力会很快就被用完,而且还得不到有效的结果。对于这个问题首先想到的也就是暴力穷举法,也就是罗列出所有可能得遍历方式,如果有n个城市,那以其中一个城市作为起点,要罗列出其他n-1个城市的遍历次序就会产生出n-1的阶乘种可能。

2024-02-27 21:35:50 434

原创 python实现长链矩阵的高效乘法

所以这里就可以考虑使用动态规划来实现多个矩阵相乘的过程,以达到提高效率的目的。矩阵C中i行j列所对应的元素等于矩阵A中的第i行的元素与矩阵B中的第j列的元素分别相乘后再相加的值,这也就可以得出矩阵C的单个元素的计算时间就为O(n),而C中会存在n^2个元素,这也就会导致算出矩阵C的时间复杂度是3次方级别,因此得出的结论就是矩阵乘法的运算时长非常长。上图所示的矩阵相乘时候对应于二叉树的叶子结点,两个叶子节点的父节点对应于两个矩阵乘积后的矩阵,二叉树的根节点就是多个矩阵相乘后的最终结果。

2024-02-26 13:04:09 573

原创 python实现线下缓存最优算法

在这里可以考虑使用最远优先原则来进行算法实现,在已知未来数据访问的情况下,要调度内存中缓存的数据的时候,可以采用最远优先原则,也就是在决定从内存中迁出那条数据的时候,我们看当前在内存中的数据,在即将读取的数据中,哪一条离当前要写入的数据最远。而当数据是没有存储在内存当中的时候,那么CPU就会把数据从硬盘当中读取出来,然后存放在缓存当中,这里的问题主要在于如果内存已经被用完了,那么CPU就必须先将内存当中存储的某些数据输出到硬盘当中去,空出空间来以便存放要从硬盘当中读取的数据。

2024-02-25 22:20:47 903

原创 python实现贝尔曼福德算法

贝尔曼福德算法的基本思想是,先把起始节点到其他所有节点的距离设置为无穷大,然后执行两个循环,外层循环的次数与图中的节点数相同,内层循环的次数与图中边的数量相同,在内层循环中,没变里到一条边(u,v)的时候,算法判断起始节点到节点u的距离加上边(u,v)的长度是否小于起始节点到节点v的距离,如果是的,那就修改起始节点到节点v的长度距离。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-24 19:59:28 407

原创 python实现维特比算法

上图所表示的就是村民第一天健康,第四天健康时,四天状态的一种可能情况,显然从第一天的某一种状态开始触发,有多种不同路径可以抵达第四天种3种状态种的一种,每一条路径的发生可能性都对应路径上概率的乘积,如果路径不同,那对应的概率也不同。对于上图职工显示,上一层多种状态会依据不同概率转换到下一层的相应状态,表示状态转换的线条相互交织构成了篱笆形态。对于维特比算法,首先想到的就是高通公司,对于现在的通信行业的两大巨头公司之一,高通公司的发家是由器创始人维特比发明了一种高效的通信解码技术,维特比算法。

2024-02-23 22:00:43 552

原创 使用贪婪算法解决作业调度问题

对于给定的如上例子,给出的最优解决方案如上,而对于贪婪算法来解决这个任务调度问题,给定时间段[0,T]之后,选择一个起始时间最晚但又能完成的任务,假设选定的任务的起始时间是t,接下里的问题就会变成如何在时间段[0,t]内选择任务,注意到此时的选择与上一次的选择是没有相互影响的,无论在[0,t]时间段内选择任务任务,上次选择的任务都不会受到影响,[0,t]内对应的任务完全可以和上一次选择的任务结合在一起形成问题的解。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-22 13:01:06 618

原创 python使用prim算法实现最小生成树

如何快速的找到一条连接左右两个集合节点而且数值最小的边,这里就可以使用到堆排序,一开始左边集合S为空,右边集合包含所有节点,然后随机在节点中选择一个节点放置如左边的集合,然后将把放入左边集合的点有关的所有边加入到一个小堆中,根据小堆的性质,数值最小的边一定在堆的顶部,于是可以轻易的将这条边获取到,从这条边开始就可以找到第二个加入集合S的节点,然后把第二个节点所对应的边也加入到小堆中,于是连接左边集合中两个点和右边集合中的最小边又出现在堆的顶部,如此循环直到所有点都加入到左边集合为止。

2024-02-21 12:52:14 591

原创 Python使用kruskal算法实现最小生成树

而如何删除不必要的边,使得最终剩下的边在连接所有节点的情况下,维护成本最小,我们可以假设在所有节点都不连接的情况下,如何将所有边加上,这里是可以采用kruskal算法,其基本思路是每次选择一条成本最低且不形成环的边,这里的环也就是指从一个节点出发能够返回原节点的路径。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-12 23:05:02 459

原创 Python实现桶排序

然后接下来就要根据元素值来判断需要将该元素放入至那个桶里面,例如,数值0.78就需要放置于区间0.7-0.8之间,因此放入第八个桶里,数组0.12和0.17属于区间0.1-0.2之间,应该落入到第二个桶里。需要注意的是,在将数组放入对应的桶里的时候,一定要保持排序状态,也就是说0.12和0.17被放入桶里的时候,他们在桶里就是排序的。如果在对给定的一些数据进行排序的时候,给定的被排序的数据存在某种特征的时候,我们就可以利用这种特征,设计出相应的排序算法,以达到加快排序速度的目的。

2024-02-11 23:25:27 646

原创 python实现基数排序

这样就对给定的所有数值完成了排序,对于基数排序很少用于数字的排序,而是用于对复杂数据结构进行排序,复杂数据结构包含很多字段,假设如果有一个数据结构叫做person,它包含的成分有年龄,身高,收入等信息,那么这些字段就对应于基数排序时各个位数上的数字,于是就可以基于这3个成分对person结构进行排序,也就是使用基数排序,在基于某个位或成分进行排序时候,要求它必须是稳定的,也就是针对某个位或成分的时候,如果有多个相同的数值,则原来排在前面的元素在排序厚必须依然排在前面。

2024-02-10 21:33:46 610

原创 Python实现计数排序

这个元素所对应的就是根据原数组最大值所创建的新数组,这个数组包含元素的个数正好等于要排序数组中的最大值,这个数组称为bufferArray,接着遍历原始数组的元素,然后取出对应的元素值。对于以上给定数组进行计数排序的基本流程,首先遍历一次数组,获得数组中元素的最大值,给定的数组的最大值为6,于是创建含有7个元素的新数组,其中每个元素的初始值是0。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-09 23:46:16 466

原创 排序算法的时间复杂度存在下界问题

而针对这个,我们是可以从理论上进行证明,也就是任何的排序算法,只要这个排序算法会存在一个取出元素的动作,那就会存在以上的结论,时间复杂度大于等于O(n*lg(n)),例如在冒泡排序中,依次取出 两个元素,对这个元素进行比较大小,然后调整被比较元素的位置。每个节点对应元素的一种排列方式的话,那如果数组会有n个节点,那么节点排列的可能性总共有n的阶乘中,也就是说,决策树底层会有n的阶乘个叶子结点,由于决策树底层叶子结点对应的元素排好序之后的排列,依次决策树的叶子节点必须大于等于n的阶乘。

2024-02-08 22:52:54 1232 2

原创 堆结构的解读

对于堆右大堆和小堆之分,大堆的特点是父节点的值大于等于孩子节点,小堆的特点是父节点的值小于等于孩子节点,于是在大堆中,在数组中值最大的元素一定在堆的顶部,而对应的位置也就是在数组的首位,同理,小堆而言,值最小的元素在堆的顶部,对应于数组就是最小值元素排在首位,可以向二叉树那样定义堆的高,由于每个节点最多只能包含两个子节点,因此对于n个元素的数组而言,它所对应的堆的高度就是lg(n)。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-07 13:12:12 717

原创 python实现k路归并排序

从归并排序中可以衍生出来一个新的问题,关于k路归并排序,给定k个已经排好序的数组,每个数组含有n各元素,要求将这k个数组合并成一个排好序的大数组。在对两路排好序的数组进行归并时候,会用两个指针指向两个数组首元素,每次对指针指向的元素进行比较,把较小的元素放入新数组,同时对应的指针向后移动一个位置,就把这个做法可以推广到k路数组。添加图片注释,不超过 140 字(可选)

2024-02-06 21:58:54 665

原创 python解决二叉树层序输出问题

在层序输出二叉树的时候,层序遍历二叉树需要应用队列来完成,所在在把每层的节点值从左到右依次取出来是最主要的一个环节。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-05 12:53:19 594

原创 python删除链表中重复节点

对于该问题,排序链表中,数据域相同的节点一定是相邻的,因此,逐个判断每个节点current的数据域与其下一个相邻节点的数据域是否相同,如果相同,则current.next存储current.next.next节点的地址,也称为current节点指向current.next.next节点。如果不相同,则该节点current向后移动,更新current为current.next所表示的节点。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

2024-02-04 12:49:15 557

原创 python使用两个栈实现队列

因此如果想要利用两个栈来形成队列,就要将后进先出的结构特点改造成先进先出,将队列的入队和出队两个过程分开来进行处理,栈的入栈和队列的入队其实是差别不大的,只是出栈和出队的顺序是相反的,只需要想办法利用两个栈的配合来模拟实现先进先出的出队过程即可。如果想要实现以hello的顺序出栈,借助第二个栈将h重新置于栈的顶部,o置于栈的底部,有了这一思路就很容易解决这个问题了,只要将第一个栈中的元素依次出栈并放入第二个栈中,即可使单词按照hello的顺序在第二个栈中从栈顶至栈底排列。

2024-02-03 19:43:21 665

原创 python解决替换空格问题

对于该问题,如果假设给定的replace变量长度是n,最直接的想法就是从前往后遍历字符串,然后如果遇到了空格字符,就将空格之后的字符向后移动n-1位,将空格字符替换成为replace,这种做法的问题在于每次发现一个空格就需要将剩余字符向后移动,需要多次移动字符,这就产生的时间复杂度较高的问题,不是一种较为理想的做法,由于从前向后的比阿里,才需要向后移动字符,所以考虑从后往前更新字符串。对于给定一个内部含有空格字符的字符串input_str,使用replace字符来替换字符串中的所有空格。

2024-02-02 13:07:00 522

原创 python解决旋转数组问题

旋转数组k次其实就是将k个尾部元素移动到了头部,同时将剩余元素向后移动,那么将原始数组逆序,同时再对前k个元素逆序,然后剩余的元素逆序,即可得到旋转k次以后得数组了,这种方式相当于对n个元素,每个元素被反转了2次,时间复杂度降低了,空间复杂度仍然是符合条件的。如果在限制空间复杂度的基础上,解决一个关于数组旋转的问题,如果说正常不限制空间复杂度的话,是一个较为简单的问题,但是在针对算法进行优化上,把空间复杂度控制在O(1),还是值得考虑深究的。添加图片注释,不超过 140 字(可选)

2024-02-01 12:49:36 454

原创 python解决十进制数转化为n进制数问题

将各个步骤保存起来的0和1从下至上依次输出,得到的1011001即为89的二进制表示法,可以理解为89是由1x1+0x2+0x4+1x8+1x16+0x32+1x64所组成的,没执行一次就更新一次num值传给下一次处理,使用while循环来实现,结束条件就是num值更新为0的时候。对于十进制数转换为任意进制数,这是一个非常经典的问题,而且无论是日常工作还是生活当中都是有可能遇到的实际应用问题。如果给定一个十进制的数num,需要将其转换成为n进制的数,对于n的范围是n在2-16之间。

2024-01-31 13:40:30 641

python使用动态规划解决不同路径问题

针对二维动态规划,还有一个问题就是关于求不同路径的实例,主要是说明在实际应用的场景中,要理解透彻实际问题的真正目的,就可以灵活实现代码编写。 对于求不同路径问题描述,对于一个机器人,处在一个mxn的网格子的最左上端,这个机器人每一次移动只能是向左或者向下移动一个格子,机器人的最终目的是到达网格子的最右下端,要想得到的就是这个机器人总共有多少中方法能够到达最右下端,约束条件是m和n的值不会超过100。

2024-01-01

python解决最长回文子串,使用动态规划思想解决

一个算法中的经典问题,求最长回文子串问题,其实是可以归于二维动态规划问题。 对于给定的一个字符串中,找到这个字符串中的回文子串,回文子串的概念是从前往后正向的读和从后往前反向的读都是完全相同的字符串。

2023-12-31

使用python爬楼梯问题

对于动态规划算法的经典问题中,找到爬到楼梯顶层的方法有多少种事一个比较基础也是比较经典的一个一维动态规划问题。问题的主要描述为,假如要爬一个n层的楼梯,每次只能走一个或者两个楼梯,总共有多少种方法可以爬到楼梯顶部。

2023-12-31

使用python解决动态规划问题,背包最大价值问题

主要是使用python来实现求出一种如何将物品装入到背包当中,并且能够得到最大价值的方案。主要使用的动态规划的思想来解决。

2023-12-31

斐波那契数列python实现

使用python的方法实现斐波那契数列,主要使用两种方法,一种是使用递归方式来实现,另一种是使用的动态规划的算法实现,两种方法递归算法主要是时间复杂度高,但是效率较低,而对于动态规划算法实现方式,降低了时间复杂度,但是想对的使用内存空间会增加,也即是使用空间复杂度的高来换取低时间复杂度,提高运行效率。

2023-12-27

python实现冒泡排序和快速排序

对于排序算法中比较知名的两个算法,分别就是冒泡排序和快速排序,在日常学习和使用中都会听到这两种排序算法的名称,这里主要介绍如何使用python来实现这两种排序算法。

2023-12-18

python实现直接排序和折半插入排序

该资源主要是使用python来实现直接插入排序算法和折半插入排序算法。

2023-12-17

网页版本的圣诞快乐祝福页面,包含几个不同的页面

这是一个网页,网页的主要内容是圣诞快乐的祝福页面,且包含了几个不同的页面,可以通过点击页面来进行切换,且网页上含有圣诞快乐的音乐。

2023-12-17

wxpython的toolbar工具栏和menu菜单组件

主要是对wxpython的toolbar工具栏和menu菜单组件进行一个讲解,toolbar和menu作为一个较为常用的组件,在大部分的界面开发中都可能会使用到,以及对wxpython的主界面上的一些细节进行处理

2023-12-15

wxpython的部分组件实现

消息弹窗,wxpython自带的messageDialog创建函数 wxpython提供的可输入文字的窗口的创建函数,同时针对提供的按钮控件,提供了事件对输入文字的获取 wxpython提供的选项类型窗口的创建方法,对窗口文字描述以及提供的选项,同时还有对按钮事件的应答,获取选择选项的值

2023-12-14

wxpython日常学习分享资源,显示鼠标位置

使用wxpython在窗口中间的界面如何添加控件,可以在中间添加一个静态文字,以及一个可输入文字框控件,编写对应的事件处理方法,根据鼠标在界面上的位置移动,将位置的坐标打印在自定义添加的动态文本输入框内,通过event来捕捉事件并实现想要的效果

2023-12-12

wxpython日常学习源码

使用wxPython开发的窗口界面,默认自带顶部的窗口控制栏,其上会有默认自带放大、缩小以及关闭功能的按钮,可以通过在实例化一个frame时候,设置frame的窗口标题,对应的窗口底部也是同样有状态栏,且可以添加文字描述,但是对于底部状态栏,需要对于frame自定义创建一个状态栏。

2023-12-12

wxpython学习界面开发

入门学习Python时,使从接触一个项目开始,当时需要我开发一个界面,当时综合考量之后,最终选择了今天要分享的内容部分,也就是使用Python来开发,主要使用到的是Python库——wxPython库来进行界面开发

2023-12-11

Python脚本爬取unsplash图片

使用Python的requests库访问unsplash然后下载图片内容,同时解析访问过程中json文件。

2023-12-06

使用Python脚本获取教务网站上的个人成绩

主要使用Python库beautifulsoap以及urllib库对网站进行成绩爬取,通过lxml进行获取到的xml数据、xml节点树到等进行节点解析后准确获取到想要的数据。

2023-12-06

BBDoc文件搜索软件推荐

前两天刚推荐了一个Everything检索软件,虽然日常工作中使用Everything的频率较高,但是发现有时候检索文件还是会有检索不到想要检索的文件的情况存在,所以今天又来推荐一个更加强大的软件,那就是今天要推荐的BBDoc软件,使用这个软件最主要的目的是为了检索文件中存在想要查找的文字,在寻找打开word,pdf或者xml之类的文字类文件中,从这类文件中查找匹配文档内容,用户可以使用BBDoc来对软件进行设置,用户自行决定要查找的文字类型、文件大小、文件生成或者修改的最后时间所处的时间段、名称、标签、目录、关键内容信息等,通过对这些参数的设定之后,还可以对文件的重复进行设置筛选,能够尽可能的显示文件的不重复性。

2023-12-03

Python脚本使用selenium为自己的购物车进行定时抢购

可以使用脚本控制selenium定时对于网站购物车内的商品进行购买,提交订单,可以进行定时抢购等功能。

2023-12-02

空空如也

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

TA关注的人

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