第1章 游戏之乐----游戏中碰到的题目第2章 数学之魅----数字中的技巧 2.2 不要被阶乘吓倒 问题2:求N!的二进制表示中最低位1的位置。 分析:一个数字k如果乘以2,则其二进制就会左移一位。那么N!的质因子分解中的2的个数就是N!的二进制中有多少个后缀零。 1 int lowestOn.....
分类:
其他好文 时间:
2015-10-30 14:10:33
阅读次数:
152
这一题与Binary Tree Level Order Traversal的解法一样,只需在其基础上加一句 reverse(ret.begin(),ret.end())。好像编程之美上有这题。...
分类:
其他好文 时间:
2015-10-23 01:40:08
阅读次数:
186
编程之美有一道关于阶乘的题目:
1给定一个整数N,那么N的阶乘等于N!,末尾有多少个0呢,例如N=10,N!=3628800,N!的末尾有两个0
2求N!的二进制表示中最低位为1的位置。
阶乘定义:
**n!={1n(n?1)!n=0n>0?n∈Nn! = \left\{ {\begin{array}{*{20}c}
1 \ {n(n - 1)!} \\end{ar...
分类:
其他好文 时间:
2015-09-22 01:28:45
阅读次数:
239
情况1:我不同意端到端此情况非经常见,方法是动态规划。编程之美的方法三给出了解法。这里就直接给出代码了int maxSubSum(vector& data){ int length = data.size(); assert(length >= 0); int maxSum = data[lengt...
分类:
其他好文 时间:
2015-09-20 16:14:43
阅读次数:
116
见朋友出了问题,最近访问技术论坛时,大致是这样的:有一组。其中包括:N整数,除了的整数只有一次以外,其他已经出现3二级。如何找到只出现一次最快的数?作者的解法有点忘记了。可是这个题突然让我想起之前《编程之美》里的一道题, 和这个题的差别是其它都出现2次,仅仅有一个是出现一次。 它的解法很巧妙。就是把...
分类:
其他好文 时间:
2015-09-18 13:53:44
阅读次数:
132
问题一:给定一个整数N,那么N的阶乘末尾有多少个0呢?例如N = 10, N! = 362800,N! 的末尾有两个0.问题二:求N! 的二进制表示中,最低位1的位置。问题一的解法一:最简单的方法就是把N! 算出来,就可以知道末尾有多少个0了。问题一的解法二:我们这样想,末尾的0可以从哪里得到呢,1...
分类:
其他好文 时间:
2015-09-16 14:17:37
阅读次数:
197
编程之美有一道关于深度搜索和回溯应用的题目——构造数独:
数独的棋盘是由九九八十一个小方格组成的。玩家在每个小格子中,分别天上1至9的任意一个数字,让整个棋盘每一行,每一列,以及每一个3*3的小矩阵中的数字都不重复。
作者给两种解法:
解法一:
下面的GenerateValidMatrix()函数用经典的深度优先搜索来生成一个可行解。从(0,0)开始,对没有处理过的格子,调用GetValid...
分类:
其他好文 时间:
2015-09-13 21:43:47
阅读次数:
153
编程之美有一道关于数组中最长递增子序列,题目如下:
写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度。
例如在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列的长度为4(如1,2,4,6),从该书给的例子我们可以知道的是其最长的递增子序列可以不连续的。
作者利用动态规划方法给了三种解法。
解法一:
根据无后效...
分类:
编程语言 时间:
2015-09-07 22:53:50
阅读次数:
288
消息进展1.绿色通道投递简历: 腾讯 后台开发 Garena 研发 知乎数据平台开发 美图(厦门)后台开发工 2.待投: 百度 大数据云计算工程师复习计划: 9.6 将Ali部门周报整理和资料整理,晚上7:00腾讯笔试 编程之美以及java基础知识,算法,计算机网络,重点放在百度,...
分类:
其他好文 时间:
2015-09-05 22:18:10
阅读次数:
204
题目来源:《编程之美》2.10 题目:同时找出数组中的最大数和最小数 分析:最基本的方法是两次线性扫描数组,分别找出最大数和最小数,时间复杂度为O(n)。其实我们可以一次扫描即可。首先,我们将输入元素相互进行比较,然后把较小的与当前最小值比较,把较大的与当前最大值进行比较。这样,对每两个元素...
分类:
编程语言 时间:
2015-09-05 11:06:53
阅读次数:
162