算法整理
文章平均质量分 72
Jeffery_Gong
纸上得来终觉浅,绝知此事要躬行。
展开
-
算法整理——非递归归并排序
递归是个好东西,可以将一个大问题分拆成多个小问题。只要处理好每一个小问题、以及小问题合并成大问题的操作,基本就算是完成了,而程序需要写解决小问题的代码即可。但递归有时候也会有缺陷,如果递归层数控制不好、或者递归过程中生成了大量变量,容易造成栈溢出。尤其在工程中,栈溢出的问题是需要极力避免的。 常用的归并排序是使用递归的方式,将排序序列一层一层拆分成一半,完成一层的排序后再回调给上一层原创 2016-04-21 13:28:22 · 1100 阅读 · 0 评论 -
算法整理——2017欢聚时代校招编程题
题目给定一个无序整数数组,其中一个数只出现一次,其余数都出现三次,请找出只出现一次的那个数。输入:第一行输入一个数N,表示数组的大小,接下来输入N个数,确保每个数都在int范围内。输出:只出现一次的数。思路如果这道题描述的是其余数都出现2次,相信很多人都能够想到将所有数一起异或,最后的结果将是要求的那个数。但是这里讲的是出现三次,所以并不能用异或的方法将其余数抵消掉。这原创 2016-09-29 00:02:38 · 1300 阅读 · 0 评论 -
算法整理——2015腾讯开发岗笔试题
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。打擂算法:传送门该算法很好地将一般需要O(nlogn)时间复杂度得到的结果减少成O(n),但是前提条件是出现最多的数的出现次数大于(不包括等于)集合中个数的一半。float mostEleme原创 2016-09-08 20:46:56 · 2161 阅读 · 0 评论 -
LCS阿里巴巴移动客户端笔试题
问题给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如,query为 "acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。分析最长公共子串问题(Long Common String)原创 2016-09-05 00:45:02 · 476 阅读 · 0 评论 -
2016 CVTE 笔试编程题
问题给定一个有序数组和一个目标值,找出该目标值在这个数组里面的区域,若目标不存在于数组中,返回[-1, -1];例如:有序数组 1 2 3 4 5 6 6 6 6 给出目标值6,应当返回[5, 8] ;要求:时间复杂度O(Llogn)。思路看到有序数组和时间复杂度O(logn)时,第一反应就是二分查找。1.先二分查找出第一个与目标值相等的位置;2.在(1)的基础原创 2016-09-04 22:17:06 · 1197 阅读 · 0 评论 -
算法整理——通过树的遍历顺序重建树
遍历前序遍历:对于树的每一个节点而言,先输出该节点的key,然后遍历左子树,最后遍历右子树;中序遍历:对于树的每一个节点而言,先遍历完左子树之后,才输出该节点的key,最后遍历右子树;后序遍历:对于树的每一个节点而言,先遍历完左子树,再遍历完右子树之后,最后才输出该节点的key。总结:序词(前,中,后)修饰的是根节点输出的位置,而右子树一定是后于左子树遍历。举例:前原创 2016-07-29 10:45:09 · 882 阅读 · 0 评论 -
算法整理——非对称密钥加密RSA数学相关与简单实现
RSA RSA公钥加密算法是1977年由Ron Rivest、Adi Shamir和Leonard Adleman一起提出的,是目前最有影响力的公钥加密算法,能够抵抗到目前为止已知的绝大多数密码攻击。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。加密方式是发送者采用原创 2016-07-28 08:55:34 · 1086 阅读 · 0 评论 -
数据结构——实现key为int类型的AVL树
AVLAVL在计算机科学中最先发明的自平衡二叉树,得名于它的发明者G.M. Adelson-Velsky, E.M. Landis。主要特点:AVL树种任何节点的两个子树的高度最大差别为1。为了保持该特点,AVL可以在进行插入或删除时,采用四种方式进行旋转,分别是LL, LR, RR, RL。说明1.该代码没有采用模板的形式实现,采用的key为int类型。事实上,任何能原创 2016-07-26 15:01:59 · 867 阅读 · 0 评论 -
算法整理——常用排序算法
CSDN的名言——编程之久,除算法和数据结构,啥都不属于我们。做完一些项目发现,编程最重要的还是算法还有数据结构,无关语言、框架。所以有感需要重拾一下一些算法。作为入口,希望排序带我不断地探索出去。——————————————以下实现均实现为升序排序————————————————冒泡排序算法思想很简单,通过两两比较,不断把较大的那个挤向边沿,形成有序序列。是稳定的排序,即原创 2016-07-24 12:28:39 · 416 阅读 · 0 评论 -
gradle/jitpack/github管理第三方类库
实习项目中接触到强大神奇的github另一种用处,与jitpack合作,使用gradle可以轻松地把挂在网上的第三方类库加进到工程项目里面。一、到github找到适合自己的安卓第三方项目,通过readme.md/readme.txt找到项目包挂载的站点。这里以http://jitpack.io为例。二、通过http://jitpack.io站点找到你想加入的项目的版本号。一原创 2016-03-25 11:04:24 · 849 阅读 · 0 评论 -
算法整理——KMP算法
KMP算法用于字符串匹配的问题,可以达到最好时间复杂度O(n+m)。其中n,m分别是文本串和模板串的长度。传统的处理字符串匹配的方法是:遍历文本串的每一个字母,通过以这一个字母为开头的子字符串与模板串比较,当发现某一位不匹配时,跳出到执行下一个字母的检测。假设最坏情况,每一次都是模板的最后一个字母出错(比如文本串aaaaaaaaaaaab,模板串aaaab),需要的时间复杂度为O(n*m)。原创 2016-04-13 14:55:51 · 621 阅读 · 0 评论