
--1.2.Algorithm
文章平均质量分 52
leoIsCoding
Github : [ https://github.com/leoChaoGlut ]
Email : [ leoIsCoding@163.com ]
展开
-
对于树的最远两节点的距离的理解
定义:n个节点的树,任选一个节点V0,找到距离它最远的节点V1,再找距离V1最远的节点V2,edge(V1,V2) 即为树的直径.理解:edge(V0,V1)一定会经过root(不理解的话你画个图试试~),则edge(root,V1)即为距离root最长,或次长的边.因此,再从V1出发,找距离V1最远的节点V2,必定通过root,所以可以看成是找距离root最远的节点V2(不能回头搜索V1原创 2015-04-25 17:16:22 · 1961 阅读 · 0 评论 -
N皇后问题
#includeusing namespace std;int n,sum=0,vertical[20],diagonal[20];bool diagonalJudge(int x,int y){ for(int k=1;k<x;k++) if(x-k==y-diagonal[k]||x+y==k+diagonal[k]) return false; return true;原创 2015-02-09 12:49:36 · 1379 阅读 · 0 评论 -
约瑟夫环问题
Q:n个人围成一圈,要存活的人数为p.按照顺时针依次编号1,2,3...,n.由第1个人开始顺时针报数,每报数为m的人就立刻自杀,然后再由下一个人重新报数.求:最后剩下的p个人的编号.输入顺序:n p minput:41 2 3output:16 31Thinking:容器选择:利用deque,vector,list都可以,这里我选择了deque.比较简单,直接原创 2015-03-29 10:40:30 · 1453 阅读 · 0 评论 -
整币兑零问题
Q:把一张n元的整币兑换成k种零币,m(1),m(2),.......m(k)(升序,单位:元),求不同的兑换种数.Thinking: 第一感觉,深搜,但是写出来之后发现,当n较大时,m(1)较小时,深搜的深度太深,思考过后发现,和背包问题有点类似,于是想到dp.input:10 31 2 5output:10Process:Input:原创 2015-03-28 09:55:16 · 1978 阅读 · 0 评论 -
猴子爬山问题
问题:n级的台阶,每次可以跨一步,有m种跨法,求爬到第n阶台阶,共有多少种不同的爬法?例: 一个猴子在一座30级台阶的山上爬山,猴子上山一步可跳1级,或3级,试求上山的30级台阶有多少种不同爬法input:30 213output:58425input:50 42356output:106479771#includeus原创 2015-03-24 16:21:13 · 5166 阅读 · 0 评论 -
非空子集个数计算
题目:n个元素的集合{1,2,.....,n},可以划分为若干个非空子集,如,当n=4时,集合{1,2,3,4}可以划分为15个不同的非空子集如下:由4个子集组成:{{1},{2},{3},{4}}由3个子集组成:{{1,2},{3},{4}}{{1,3},{2},{4}}{{1,4},{2},{3}}{{2,3},{1},{4}}{{2,4},{1},{3}}原创 2015-03-24 13:51:26 · 11503 阅读 · 0 评论 -
排列数算法A(n,m)(n>=m)
#includeusing namespace std;int source[]={1,2,3,4,5,6,7,8,9},n=9,m=3,record[10],visited[10],counter=0;void output(){ for(int i=0;i<m;i++) cout<<record[i]<<" "; cout<<endl;}void dfs(int step)原创 2015-03-20 16:20:43 · 2731 阅读 · 0 评论 -
组合数算法 C(n,m)(n>=m)
#includeusing namespace std;int a[]={1,2,3,4,5,6,7,8,9},b[10],n=9,m=5,counter=0;void output(){ for(int i=0;i<m;i++) cout<<b[i]<<" "; cout<<endl;}void dfs(int step,int index){ if(step==m)原创 2015-03-20 15:44:52 · 2710 阅读 · 0 评论 -
最长公共子序列LCS递归解法
#include#includeusing namespace std;int row,col,**map,index,maxLen;char *record,*lcs;bool flag=true;string str1,str2;/* eg: str1="abcb",str2="acb" a b c b a 1原创 2015-03-17 13:51:19 · 3450 阅读 · 0 评论 -
最长递增子序列LIS递归算法
#includeusing namespace std;int minStep,n,*arr,*record,*lis,index,recordMax,lisCount;/* 1.minStep :存放"只"遍历一次指定数组,得到的LIS的长度.比如: *arr={4,5,1,2,3}; 遍历该数组过后,minStep=2,即为{4,5} 两个元素的长度.具体请看getMinSt原创 2015-03-16 11:13:53 · 3354 阅读 · 0 评论 -
基于redis分布式缓存实现(新浪微博案例)
第一:Redis 是什么?Redis是基于内存、可持久化的日志型、Key-Value数据库 高性能存储系统,并提供多种语言的API.第二:出现背景数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache转载 2016-07-07 19:21:17 · 1752 阅读 · 0 评论 -
MySql索引算法原理解析(通俗易懂,只讲B-tree)
刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多)B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。而B+tree是B-tree的一个变种,大名鼎鼎的MySQL就普遍使用B+tree实现其索引转载 2016-08-25 17:23:23 · 916 阅读 · 0 评论 -
动态规划:从新手到专家
前言_我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。注意:如果你对于其中某一节已经了解并且不想阅读它,没关系,直接跳过它即可。简介(入门)什么是动态规划,我们要如何描述它?动态规划算法通常基于一个递推转载 2016-12-13 22:51:56 · 409 阅读 · 0 评论 -
常见面试之机器学习算法思想简单梳理
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。 纵观IT行业的招聘岗位,机器学习之类的岗位还是挺转载 2017-01-14 18:39:54 · 578 阅读 · 0 评论 -
决策树算法介绍及应用
机器学习 (Machine Learning) 是近 20 多年兴起的一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动学习的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与统计推断学联系尤为密切,也被称为统计学习理论。在算法转载 2017-01-13 10:09:58 · 9786 阅读 · 0 评论 -
进程调度算法
#include//main.cpp#include#include"process.h"#include"fcfs.h"#include"timeSlice.h"#include"priority.h"using namespace std;void pause(){ system("pause");getchar();system("cls");}int main(){原创 2015-01-10 22:28:55 · 1874 阅读 · 0 评论 -
磁盘调度算法
一、设计目的:加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法#include#include#includeusing namespace std;vectorvi;int magneticHead=0,dis=0,N=0;void input(){ int position; cout<<"Where's the magnetic head?"<<endl;原创 2015-01-10 22:32:41 · 1956 阅读 · 0 评论 -
页面置换算法
设计目的: 加深对请求页式存储管理实现原理的理解,掌握页面置换算法.#include#include#include#includeusing namespace std;void output(vectorvb){ cout<<"Queue:"; for(int i=0;i<vb.size();i++) cout<<vb[i]<<" "; cout<<endl;}原创 2015-01-10 22:33:53 · 1583 阅读 · 0 评论 -
喝酒问题:啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒
今天被同事问到一个喝酒的问题,题目如下:啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒,问:10元钱最多能喝几瓶酒?于是乎写了一段小代码来解决这个问题:package test2;import org.junit.Test;public class MyTest { int maxCount = 0; @Test public void t原创 2016-01-24 21:40:27 · 10765 阅读 · 4 评论 -
各种Java加密算法
如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm,安全散列算法)HMAC(Hash Message Authentication Code,散列消息鉴别码) 复杂的对称加密(DES、PBE转载 2016-04-28 19:20:58 · 7591 阅读 · 0 评论 -
布隆过滤器原理和例子
布隆过滤器用于字符串去重复,比如网络爬虫抓取时URL去重、邮件提供商反垃圾黑名单Email地址去重。等等。用哈希表也可以用于元素去重,但是占用空间比较大,而且空间使用率只有50%。 布隆过滤器只占哈希表的1/8或1/4的空间复杂度,就能解决同样的问题,但是有一定的误判,而且不能删除已有元素。元素越多,误报率越大,但是不会漏报。对于还需要删除的布隆过滤器,还有Counter Bloom Fil转载 2016-07-10 15:48:43 · 2302 阅读 · 0 评论 -
LeetCode:Top K Frequent Elements
Q:Given a non-empty array of integers, return the k most frequent elements.For example,Given [1,1,1,2,2,3] and k = 2, return [1,2].Note: You may assume k is always valid, 1 ≤ k原创 2016-06-30 21:11:10 · 1062 阅读 · 0 评论 -
LeetCode: Single Number
Q:Given an array of integers, every element appears twice except for one. Find that single one.思路:一个整数异或它本身,结果为0. 所以只要遍历一次数组即可得到只出现一次的数字.代码:public int singleNumber(int[] nums) { int le原创 2016-06-30 21:03:21 · 1078 阅读 · 0 评论 -
LeetCode:Group Anagrams
Q:Given an array of strings, group anagrams together.For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return:[ ["ate", "eat","tea"], ["nat","tan"], ["bat"]]原创 2016-06-30 21:55:46 · 1031 阅读 · 0 评论 -
LeetCode:Max Points on a Line
Q:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.思路:n个点,最多形成 (n-1)! 条线段,利用2个点p[i],p[j](j=i+1)可以得到它们所有的所属直线的斜率.以该斜率为key, Set为value,set中存放的是构成原创 2016-07-01 20:31:15 · 1054 阅读 · 0 评论 -
B-tree/B+tree/B*tree
B~树 1.前言:动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树 (Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么转载 2016-07-05 14:14:13 · 905 阅读 · 0 评论 -
25个Java机器学习工具和库
本列表总结了25个Java机器学习工具&库:1. Weka集成了数据挖掘工作的机器学习算法。这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用。Weka包括一系列的工具,如数据预处理、分类、回归、聚类、关联规则以及可视化。2.Massive Online Analysis(MOA)是一个面向数据流挖掘的流行开源框架,有着非常活跃的成长社区。它包括一系列的机器学习算法(分转载 2015-12-28 09:17:51 · 1775 阅读 · 0 评论 -
Hash算法及应用
转载 2016-10-03 16:35:04 · 386 阅读 · 0 评论 -
数据挖掘十大经典算法
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.不仅仅是选中的十大算法,其实参加评选的18种算法,转载 2016-10-27 21:09:37 · 500 阅读 · 0 评论 -
The Process Of BFS.
//This codes will show u how BFS algorithm works.#include#include#include#includeusing namespace std;char map[50][50]={ " ", " ", "原创 2015-01-14 21:16:44 · 1507 阅读 · 0 评论 -
STL sort升序排序小发现
今天做了个小测试,发现sort函数第三个参数不应该添加,添加之后反而效率更低了.比如说,一般情况下,要将N个数升序排列,sort(arr,arr+arr.length(),cmp) 这个cmp函数是这样的:bool cmp(int a,int b){return a>b;}这样就可以使序列升序,但是效率没有sort(arr,arr+arr.length());reverse原创 2015-01-17 10:29:56 · 1862 阅读 · 0 评论 -
BFS(Breadth First Search)
#include#includeusing namespace std;class coordinate{public: int x,y,step; coordinate(int xx,int yy,int s):x(xx),y(yy),step(s){}};int main(){ listl; int map[50][50]={0},visited[50][50]={0原创 2015-01-13 10:37:24 · 1495 阅读 · 0 评论 -
DFS(Depth-First-Search)
#includeusing namespace std;int **map,**record,start_x,start_y,target_x,target_y,row,col,minimum_step=9999;void DFS(int x,int y,int step){ int next_x,next_y,direction; if(x==target_x&&y==t原创 2015-01-12 17:26:35 · 1524 阅读 · 0 评论 -
从业务角度理解深度学习及其应用
近几年,深度学习在图像、音频处理等领域得到了广泛的应用并取得了骄人的成绩,本文根据笔者的工作实践,谈谈对深度学习理解,以及我们的应用和经验。文章涉及的很多结论,是笔者个人的理解和不充分实验的结果,所以难免谬误,请读者不吝指正。机器学习就是学习对象的表示“机器学习/深度学习模型依靠左右互搏,可以迅速达到很高的智能水准。”、“人工智能/深度学习能毁灭人类的奇点即将来到!” 网络上经常出现这转载 2017-01-13 10:11:32 · 2195 阅读 · 0 评论