数据结构和算法
文章平均质量分 50
NicoVon
这个作者很懒,什么都没留下…
展开
-
PHP求解股票买卖问题
动态规划比较经典的题目给定一支股票一段日期内的的每日价格price题目1: 求这段时间内买卖一次获得的最大收益思路:即找到一组i和j,使得 price[i] - price[j] 最大,且i状态转移方程式为:profit = max(profit, price[i] - minPrice);而minPrice = min(minPrice, price[i]);fu原创 2016-12-10 08:30:03 · 754 阅读 · 0 评论 -
cnn分类
最近做项目要对所有评论内容做分类,分为正面和负面两个维度,一开始我自己写了个朴素贝叶斯分类器,准确率只有60%(测试数据,线上数据的结果应该更理想),后来也是cto大大亲自出马,找了一个cnn的分类器,在此基础上加以改造,将业务逻辑嵌了进去,出于好奇,也是最近deep learning比较火,看了一些资料,结合这个分类器,对分类器做了什么做一个小结。源码在此 https://githu原创 2017-08-10 18:01:31 · 3260 阅读 · 0 评论 -
操作系统原理读书笔记之死锁
出现死锁的原因对资源的争夺会导致死锁,造成资源争夺有多方面的原因,比如资源本身数量有限、错误的使用锁和信号量控制有以下四个必要条件互斥使用(资源独占):一个资源在某一时间点只能给一个进程使用占有资源且等待:在保持对原有资源占有的情况下,去申请新的资源不可抢占:资源的申请者不能强行从资源占有者手中夺取资源,只能由资源占有者资源释放循环等待:存在一个进程等待队列{P1,P2,...原创 2017-05-22 22:03:36 · 600 阅读 · 0 评论 -
判断二叉树是否为平衡二叉树
一、线性思维遍历每个节点都时候,求左右子树的深度,如果左右子树深度相差不超过1,继续递归遍历左右节点,此种方法会重复遍历,时间效率不高IS_BALANCED(T)if T is NULLreturn true;left = TreeDepth(T.left);right = TreeDepth(T.right);diff = left - right;if转载 2016-12-19 16:32:49 · 302 阅读 · 0 评论 -
字符串匹配算法strstr()
KMP: http://blog.csdn.net/v_july_v/article/details/7041827Sunday:http://blog.csdn.net/q547550831/article/details/51860017转载 2017-01-11 08:59:34 · 711 阅读 · 0 评论 -
转十进制问题
Excel列转十进制例如A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 思路:本质是一个26进制数转十进制的问题,求这类问题都是从高位到低位遍历,就是正常遍历字符串,在遍历当前值时,对上一个值乘以进制数。举个例子:BAD,初始结果res为0,->B, res = 0 * 26 + 2 = 2;->A, res = 2 * 26 + 1 =原创 2017-01-05 16:00:06 · 306 阅读 · 0 评论 -
逻辑运算实现加减法
一、加法function add($x, $y){ $sum = $x; while($y != 0){ $sum = $x ^ $y; //不考虑进位相加 $y = ($x & $y) << 1; //将y视为进位 $x = $sum; } return $sum;}二、减法a - b = a + ~b + 1 两数相减原创 2016-12-23 11:26:28 · 7041 阅读 · 0 评论 -
数根(digital root)公式的推导
题目:给定一个数字,求其数根,例如给定38,3+8=11,1+1=2,则2就是其数根推导:假定十进制数n,表达式写为 x=∑i=0n−1ai10i x = \sum_{i=0}^{n-1} a_i 10^i 其中ai a_i 表示从低到高的每一位,因为10i≡1i≡1(mod9) 10^i \equiv 1^i \equiv 1 \pmod 9 ,那么 x≡∑i=0n−1ai(mod原创 2017-01-03 08:50:24 · 5145 阅读 · 0 评论 -
求数组中缺省的数字
给一个array,长度为n,里面的元素有性质0<=array[i]function findDisappearedNumbers($array){ $ret = array(); for($i = 0; $i < count($array); $i++){ $k = abs($array[$i]); if($array[$k] > 0){原创 2016-12-22 17:22:02 · 922 阅读 · 0 评论 -
给定两个整形,求彼此二进制的不同位数
求两数的二进制的不同位,可以想到用异或,得到的值再求1的个数即可<?php function hammingDistance($x, $y){ $xor = $x ^ $y; $count = 0; while($xor != 0){ $xor = $xor & ($xor - 1); ++$co原创 2016-12-22 16:28:46 · 338 阅读 · 0 评论 -
最长公共子序列LCS和最长回文子序列的动态规划算法
<?php$x = array('A','B','C','B','D','A','B');$y = array('B','D','C','A','B','A');$c = lcsLength($x, $y);//var_dump($c);printLcs($c, $x, $y, count($x), count($y));function lcsLength($x, $y){原创 2016-12-09 11:06:12 · 306 阅读 · 0 评论 -
钢条切割问题
问题:给定一段长为n英寸的钢条和一个价格表p[i](i=1,2,...,n),求切割方案使得收益r[n]最大将切割x段的问题转化为切长度为i和剩下的n-i的问题,即得到公式:r[n] = max(p[i] + r[n-i]) (1<?php/** * 钢条切割问题 */$p = array(1,5,8,9,10,17,17,20,24,30);$n = 7;echo bot原创 2016-12-09 14:39:37 · 315 阅读 · 0 评论 -
活动选择问题
原题:给定n个活动的开始时间集合s[i]和结束时间集合f[i],假设只有一个房间,求一个最大集合使得这些活动在时间区间内安排的活动数最多思路:贪心法,将f[i]排序,选择最早结束的活动,剩下的时间可供之后尽量多的活动使用。因此,先将活动按结束时间排好序,例如: a 1 2 … i f[i] 4 7 … 10 s[i] 3 1 … 8sele原创 2016-12-12 16:11:27 · 631 阅读 · 0 评论 -
朴素贝叶斯分类
摘自写在公司内部的wiki要解决的问题:表中增加字段classification,有四个取值:0:初始值,未分类、1:positive、2:normal、99:negativereview submit前,由朴素贝叶斯分类器决定该条review的flag属于negative还是positive 分类器分为两部分训练脚本原创 2017-09-18 11:02:50 · 479 阅读 · 0 评论