算法
xpisme
好好学习
展开
-
布隆过滤器
判断一个元素是否在一个集合中数组 array查看对应的元素是否在集合中,时间复杂度O(n),遍历寻找。假设查找Mango是否在这里面,需要遍历每个元素进行比较,看是否在这里面,时间复杂度O(n)。哈希表 hashTable查看对应的元素是否在集合中,时间复杂度O(1),先通过hash方法,再去查看是否有。这样看起来是非常完美的,但是随着元素数量的增多,hashTable占用的空间也...原创 2020-03-30 23:45:48 · 284 阅读 · 0 评论 -
敏感词(DFA算法) PHP实现
PHP实现DFA算法$obj = new DFA();$obj->addKeyWord('王八蛋');$obj->addKeyWord('王八羔子');$obj->addKeyWord('香烟');$obj->addKeyWord('狗儿子');$obj->getHashMap();var_dump($obj->searchKey('王八蛋'));var_dump($o原创 2018-01-31 16:07:48 · 2866 阅读 · 0 评论 -
二分法
#include int main() { int keyList[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //有序的列表 int n = 10; // 列表的长度 int k = 2; // 要查找的值 int low = 1; // int high = n; // int mid; while原创 2018-01-12 10:35:40 · 280 阅读 · 0 评论 -
线性探测再散列和平方探测再散列(二次探测再散列)算法
用于解决冲突的两种算法 线性探测再散列 平方探测再散列(二次探测再散列)参考这个blog,写的很好。 http://blog.csdn.net/qq_27093465/article/details/52348366原创 2017-10-16 15:04:41 · 17440 阅读 · 0 评论 -
排序算法
冒泡排序function bubble_sort($array){ $n = count($array); for ($i=0; $i < $n-1; $i++) { for ($j=$i+1; $j < $n; $j++) { if($array[$i] > $array[$j]){ $t = $arra原创 2015-06-18 15:26:20 · 621 阅读 · 0 评论 -
【算法】数字读法转汉字
今天和同学聊天me:你大爷other:你二大爷me:你三大爷...突然想到能否用程序实现数字转化为汉字 例如:1040 -> 一千零四十代码如下<?php$arr = [ 0 => '零', 1 => '一', 2 => '二', 3 => '三', 4 => '四', 5 => '五', 6 => '六', 7原创 2017-10-20 16:43:56 · 1755 阅读 · 0 评论 -
基本功
表达式求值 http://math.ytu.edu.cn/syzx_more/course/ds/guo/03/0302/030205/1.%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.htm拓扑排序 https://songlee24.github.io/2015/05/07/topological-sorting/哈夫曼树 http://b原创 2017-10-17 20:57:04 · 281 阅读 · 0 评论 -
算术表达式求值过程
原文章:http://math.ytu.edu.cn/syzx_more/course/ds/guo/03/0302/030205/1.%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.htm转载 2017-10-17 19:22:14 · 1019 阅读 · 0 评论 -
算法文章
教你透彻了解红黑树 https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/03.01.md原创 2017-08-10 17:18:30 · 215 阅读 · 0 评论 -
合并两个有序数据 (百度外卖、新浪面试题)
百度外卖面试题 新浪面试题 都考了这个(归并排序)合并两个有序数组/** * 两个有序数据 合并 * @author xpisme <gxpisme@gmail.com> * @date 2016-12-12 * @return array [description] */function getSortArr($arrOne, $arrTwo){原创 2016-12-12 14:09:40 · 697 阅读 · 0 评论 -
进制转换
将一个十进制转为16进制在各种语言中其实都内置了类似这样的函数 列jsjs中 十进制转 16进制var a = 26;a.toString(16); // "1a"soa.toString(进制数);hexadecimal 十六进制 ---> 十进制parseInt('1a', 16); // 26parseInt(13, 8); // 11// 11 用8进制为13原题:https原创 2016-10-21 13:48:43 · 267 阅读 · 0 评论 -
算法 Reverse Linked List
单链表 实现倒序js 实现/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */1:迭代/** * @param {ListNode} head * @return {ListNode} */v原创 2016-10-21 10:02:51 · 285 阅读 · 0 评论 -
time33算法
以下只是我的理解,还望批评指正。目的:字符串转化成一个无符号整型的数字。 time33算法就是其中的一种算法。1:首先一个字符串可能会很长,可能包含着各种语言的字符,例如:中英文字符。那么怎么才能最快,效率最高得到对应的一个数字。并且这个数字是唯一的?2:在php中,一个字符串太长不好计算,可以使用md5函数,将字符串转化成32个长度的字符串。这样只计算这个字符串就可以了。3:生成的字符串含有英文原创 2016-11-06 20:53:55 · 3325 阅读 · 0 评论 -
数学运算 (幂,根,余,模、、、)
javascript一、 求平方根2*2=43*3=9Math.sqrt(4)2Math.sqrt(16)4Math.sqrt(9)3二、求模,求余百度百科: 取模运算(“Modulo Operation”)和取余运算(“Remainder Operation”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学原创 2016-10-21 10:42:42 · 1086 阅读 · 0 评论