- 博客(11)
- 收藏
- 关注
原创 [leetcode]Maximum Depth of Binary Tree
求树的深度用递归算法来求解很容易,但递归深度有可能会特别深,导致空间不够,本题需要用非递归解才可以,这里使用一个队列来实现,代码如下:#include #include using namespace std;struct Node{ Node * pLeft; Node * pRight; int value; Node(int v) : value(v), pLeft(
2013-04-14 21:43:56
288
原创 [编程之美3.10]分层遍历二叉树
题目1描述:给定一棵二叉树,要求分层遍历该二叉树,即从上到下按层次访问该二叉树(每层将单独输出一行),每层要求访问的顺序从左到右,并将节点依次编号。正确输出为:—————————————————————————————————————————————————————————————————————————————12 34 5 67 8—————————————————
2013-04-12 23:11:14
483
原创 [编程之美3.8]求二叉树节点的最大距离
问题描述:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点的距离。分析:
2013-04-12 23:00:01
479
原创 [编程之美2.17]数组循环移位
题目描述:设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量,如abcd1234循环右移三位, 则为 abcd11234 ->4abcd123->34abcd12->234abcd1思路一:暴力解法,一步步来,每次循环移位一次,移K%N次,此时复杂度为O(N^2)。思路二:比较巧妙的思路,
2013-04-11 23:26:41
559
原创 [编程之美3.1]字符串移位包含的问题
题目:给定字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。例如给定s1 = AABCD和s2 = CDAA,返回true;给定s1 = ABCD和s2 = ACBD,返回false。思路一:最直接最暴力的解法就是对字符串循环移位,再进行字符串包含的判断,从而判断所有可能性。思路二:s1 = AABCD循环包含s2 = CDAA,等价于s3 = s1s1包含s
2013-04-11 22:54:21
418
原创 [编程之美2.4]1的数目
给定一个十进制正整数N,写下从1开始,到N的所有证书,然后数一下其中出现的所有的“1”的个数,例如N = 2,写下1,2.这样出现了1一个“1”。N = 12,我们会写下,1,2,3,4,5,6,7,8,9,10,11,12,这样1的个数是5.题目1.写一个函数f(n),返回1到n之间出现的1的个数,比如f(12) = 5;题目2.满足f(n)=n的最大的N是多少?扩展
2013-04-10 21:52:22
465
原创 [编程之美2.2]不要被阶乘吓到
题目1.给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如N=10,N!= 3628800,N1的末尾有两个0。题目2.求N!的二进制表示中最低位1的位置。解:这题很老了,求0的个数,即为N!=K*10^m,且K不能被10整除,那么N!末尾有m个0,N!=(2^x)*(3^y)*(5^z)···,而这些0是从2*5来的,5的个数又远远小于2,因此m = z,即有z个0,此时,问
2013-04-10 21:31:55
471
原创 [编程之美2.14]求子数组之和的最大值
问题描述:一个有N个整数元素的一维数组(A[0]...A[n-1]),这个数组当然有很多子数组,那么子数组之和的最大值是多少呢?思路一:最直接能想到的方法就是枚举,暴力解法,复杂度为O(N^2)。思路二:递归解法,将数组分成长度相等的两段数组,分别为A[0],...,A[n/2-1]和A[n/2],...,A[n-1],分别求出最大字段和,原数组的最大字段和为以下三种情况之一:1:A[
2013-04-10 00:30:21
536
原创 [编程之美2.12]快速寻找满足条件的两个数及leetcode的3 sum closest 和 4 sum解析
题目:能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。例如有如下两个数组:5,6,1,4,7,9,8,给定sum = 10,则这两个数为1和9思路一:就是枚举,从数组中任意取出两个数字,计算两者之和为给定的数字。其复杂度为O(n^2),这种方法很容易,就是效率不高。思路二:先排序,对于a[i],则
2013-04-09 23:12:34
855
原创 [编程之美2.1]求二进制数中1的个数
题目:对于一个字节(8bit)的无符号变量,求其二进制表示中“1”的个数,要求算法的执行效率尽可能高。思路一:从十进制转化为二进制的方法中获得启发,可以余2然后判断是否为一,是则加一,再将该数除2继续之前的判断操作。思路二:将余2和除2操作用位操作&和>>来表示,使得效率更加快思路三:判断一个数是否为2的幂次可以用v&(v - 1)来求解,比如v = 1000000,则v-1 = 01
2013-04-09 11:20:06
577
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人