- 博客(8)
- 收藏
- 关注
原创 逻辑运算实现加减法
一、加法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 7046
原创 求数组中缺省的数字
给一个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 923
原创 给定两个整形,求彼此二进制的不同位数
求两数的二进制的不同位,可以想到用异或,得到的值再求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 339
转载 判断二叉树是否为平衡二叉树
一、线性思维遍历每个节点都时候,求左右子树的深度,如果左右子树深度相差不超过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 303
原创 活动选择问题
原题:给定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 633
原创 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
原创 钢条切割问题
问题:给定一段长为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
原创 最长公共子序列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 307
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人