【我的算法学习之路】教程文章相关的互联网学习教程文章

机器学习算法学习---模型融合和提升的算法(六)

XGBoost原理:https://www.jianshu.com/p/7467e616f227 python实现:https://www.cnblogs.com/harekizgel/p/7683803.html 算法优势和调参:http://www.cnblogs.com/mfryf/p/6293814.html 原文:https://www.cnblogs.com/zhenpengwang/p/10898637.html

KMP算法学习笔记【代码】

KMP算法 从零开始大部分来自他人博客,蒟蒻只是总结学习引言 字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置.char *str = "bacbababadababacambabacaddababacasdsd"; char *ptr = "ababaca";暴力解法如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0。相当于每次匹配失败时,i 回溯,j 被...

数据结构与算法学习之路:LIS——最长递增序列的动态规划算法和二分思想算法

一、最长递增序列的问题描述:求一个整数序列的最长递增子序列,子序列不要求是连续的。例如:Input:4,6,9,6,7,6,3,8,10;Output:5二、解决方法:1、用动态规划的方法解决。从问题我们可以知道,我们最终得到的最长递增子序列,其任意一段子序列也是对应序列中的最长子序列。这样说可能不好理解,就以上面的例子来说:最长子序列为:4,6, 7, 8, 10。在这段子序列的子序列里选一个,例如:4,6,7。则4,6,7也是4,6,9,6,...

新手算法学习之路----二叉树(二叉树最大路径和)【代码】

摘抄自:https://segmentfault.com/a/1190000003554858#articleHeader2题目:Given a binary tree, find the maximum path sum.The path may start and end at any node in the tree.For example: Given the below binary tree, 1/ 2 3 Return 6.思路:首先我们分析一下对于指定某个节点为根时,最大的路径和有可能是哪些情况。第一种是左子树的路径加上当前节点,第二种是右子树的路径加上当前节点,第三种是左右子树的路径加上...

计算机算法学习(1) - 不相交集合数据结构【图】

不相交集合 故名思意就是一种含有多个不相交集合的数据结构。典型的应用是确定无向图中连通子图的个数。其基本操作包括:Make-Set(x):建立一个新的集合,集合的成员是x;Union(x,y): 将包含x和y的集合合并为一个集合;Find-Set(x): 返回指向包含x的集合的指针;下面是一个例子,(a)是一个无向图,(b)是使用不相交集合来找连通子图的个数。做法是初始为各个顶点为一个集合,然后遍历各个边,把边的端点的集合进行合并,当处理完所有...

算法学习(十),跳台阶问题、奇偶排序【代码】

台阶问题:问题描述: 一个台阶总共有n级,没一次都可以选择跳1级,或者跳2级。 求总共有多少种跳法,并分析算法的时间复杂度。 分析: 如果只有一阶,f (1)= 1,有两阶,有两种跳法,分两次跳,每次一级,或者是一次跳2级。推广到n阶台阶,(n>2),第一次跳的时候又两种选择,如果是第一次跳一级,那么跳法数目等于f(n-1) ,另外一种是第一次跳2级,此时跳法数组等于f(n-2),所以总的跳法f(n) = f(n-1)+f(n-2) 类似fibonacci...

【算法学习笔记】72.LCS 最大公公子序列 动态规划 SJTU OJ 1065 小M的生物实验1【代码】

非常简单的DP如果dp[i,j]表示从0到i 和 从0到j 这两段的相似度,那么可以知道每个dp[i,j]是由三种状态转化过来的第一种 当dna1[i]==dna2[j]的时候 dp[i-1,j-1] + 1 长度加1第二种 否则 从下面两个状态过来那就是dp[i][j-1] 和 dp[i-1][j]//注意因为是顺序遍历 这两个都已经计算过取两者最大即可。#include <iostream> #include <cstring> #include <algorithm> usingnamespace std;//最长公共子序列长度 LCS dpchar dna1[1000+1...

建模算法学习1【图】

为了准备数学建模的比赛,我在网上学习了几种建模算法,当然这里有很多是从一些博客神那里学到的,加上了一点自己的理解,,在此真心感谢那些分享的大神。 算法一:层次分析法, 首先要明确层次分析法可以解决那些问题,顾名思义这里的层次可以理解为不同的影响因素,例如影响粮食价格的因素,影响手机市场的因素。就是在分析这些因素对于结果的影响程度通过最后得出的结果来做决策,是提供方案和措施的算法。这...

【算法学习笔记】32.计算几何 求含最多给定点的直线 SJTU OJ 1350 穿越沙漠【代码】【图】

1350. 穿越沙漠Description塞尔达公主又又又又被抓走了。林克为了找到她需要穿过拉纳鲁沙漠,坏消息是林克可能没有足够的体力穿越沙漠,好消息是沙漠中分布着N个力之果实,坏消息是我们的林克只能走直线。为了穿越沙漠,林克希望能够吃到尽可能多的力之果实。现在请你帮他规划一条直线,使他能够获得尽可能多的力之果实。Input Format输入第一行有一个数N,表示沙漠中果实的数量。接下来的N行每行两个正整数x,y,表示每个力之果实的...

算法学习之排序(6)--合并排序

一.算法描述 归并排序将一个序列分成两个长度相等的子序列,为每一个子序列调用归并排序进行排序,然后再将它们合并成一个序列。合并两个子序列的过程称为归并,归并排序的运行时间并不依赖与输入数组中元素的组合方式。 归并排序总是递归调用自己对子序列进行排序,递归退出的条件为数组中只包含一个元素时,函数不进行其他操作,直接返回。二.时间复杂度 归并排序每次都是将序列分成相等的两个子序列,因此,归并排序的...

基础算法学习--堆的模拟【代码】

什么是堆?一颗完全二叉树,根是整棵树的最小值每一层的子节点都大于对应根节点堆的模板(不考虑数是第几个插入的)int h[N]; //value int idx; //树的大小 //将当前的数向下排序 void down(int num){int t = num;if(num * 2 <= idx && h[num * 2 ] < h[t]) t = num * 2;if(num * 2 + 1 <= idx && h[num * 2 + 1] < h[t]) t = num * 2 + 1;if(t != num){swap(h[t],h[num]);down(t);} } //将当前的数向上排序 void up(int num){...

算法学习笔记 递归之 快速幂、斐波那契矩阵加速【图】

递归的定义原文地址为:http://blog.csdn.net/thisinnocence递归和迭代是编程中最为常用的基本技巧,而且递归常常比迭代更为简洁和强大。它的定义就是:直接或间接调用自身。经典问题有:幂运算、阶乘、组合数、斐波那契数列、汉诺塔等。其算法思想:原问题可分解子问题(必要条件);原与分解后的子问题相似(递归方程);分解次数有限(子问题有穷);最终问题可直接解决(递归边界);对于递归的应用与优化,直接递归时要预估时...

推荐算法学习笔记【图】

推荐算法举个简单的例子,比如有个用户进来看了一堆内容,我们把他看的所有的历史行为,嵌入到推荐引擎当中去。这个推荐引擎就会生成个性化的频道,下次这个用户再登录,或者都不用下一次,过几分钟之后,他看到的内容就会根据他最近发生的历史行为发生变化,这就是推荐系统的基本逻辑。这种方法叫基于用户行为的推荐,当然是有一定局限性的。比如你只有一个用户行为的时候,你就不知道他会不会看一个从来没人看过的内容,这其实就...

【算法学习笔记】树状数组【代码】【图】

\(0.\) 树状数组树状数组 \((Binary\ \ Indexed\ \ Trees)\) 是一种可以支持单点修改,较快维护前缀和的数据结构。他的实现方式是用一个数组维护一个“树状”的结构(如下图所示),记录一些区间的区间和,实现快速计算前缀和。\(1.\) 前置知识前缀和能看到这里的同学应该已经对前缀和不陌生了。本片博客就不再赘述\(lowbit\)操作\(lowbit\) 操作是表达二进制下最低的 \(1\) 所表达的数值。树状数组利用了这个操作。当我们定义树状...

python的递归算法学习(2):具体实现:斐波那契和其中的陷阱【代码】【图】

1.斐波那契 什么是斐波那契,斐波那契额就是一个序列的整数的排序,其定义如下;Fn = Fn-1 + Fn-2 with F0 = 0 and F1 = 1 也就是,0,1,1,2,3,5,8,13.。。。。递归实现:def fib(n):if n == 0:return 0elif n == 1:return 1else:return fib(n-1) + fib(n-2)非递归实现:def fibi(n):a, b = 0, 1for i in range(n):a, b = b, a + breturn a在这里,我们如果仔细调试,会发现,递归实现,会消耗更多的时间,这里测试如下:fr...