<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Matrixlibing的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Matrixlibing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Matrixlibing]]></copyright><item><title><![CDATA[28.整数的二进制表示中1 的个数]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7832192</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7832192</guid><author>Matrixlibing</author><pubDate>Sun, 05 Aug 2012 15:28:52 +0800</pubDate><description><![CDATA[题目：输入一个整数，求该整数的二进制表达中有多少个1。
例如输入10，由于其二进制表示为1010，有两个1，因此输出2。
分析：
这是一道很基本的考查位运算的面试题。
包括微软在内的很多公司都曾采用过这道题。



思路：
         设一个数的二进制是  a1 a2 a3 a4 ……an  ,其中ai 是0 或者1； 要求其中1的个数，只需设置一个计算器。
  若an=]]></description><category></category></item><item><title><![CDATA[27.跳台阶问题]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7832170</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7832170</guid><author>Matrixlibing</author><pubDate>Sun, 05 Aug 2012 15:15:55 +0800</pubDate><description><![CDATA[题目：一个台阶总共有n 级，如果一次可以跳1 级，也可以跳2 级。
求总共有多少总跳法，并分析算法的时间复杂度。


这道题最近经常出现，包括MicroStrategy 等比较重视算法的公司
都曾先后选用过个这道题作为面试题或者笔试题。
思路：
   这个题目是组合问题。第一步有两种走法跳1级，跳2级。设f（n）是台阶有n级的总共跳法，那么
  f（n） =   f（n-1） +]]></description><category></category></item><item><title><![CDATA[第25 题： 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7820205</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7820205</guid><author>Matrixlibing</author><pubDate>Sun, 05 Aug 2012 15:09:57 +0800</pubDate><description><![CDATA[功能：
在字符串中找出连续最长的数字串，并把这个串的长度返回，
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。
例如："abcd12345ed125ss123456789"的首地址传给intputstr 后，函数将返回9，
outputstr 所指的值为123456789。



这个题目类似与 编写 char* strcpy(char* strdes,con]]></description><category></category></item><item><title><![CDATA[第21 题 2010 年中兴面试题 编程求解： 输入两个整数n 和m，从数列1，2，3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来.]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7803778</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7803778</guid><author>Matrixlibing</author><pubDate>Mon, 30 Jul 2012 22:29:47 +0800</pubDate><description><![CDATA[思路：
         这可实际上可以看成一个动态规划。
h（n，m）表示从1到n中 任意取几个数和为m的方法数。
  则有 h（n，m）=   h（n-1，m-n） 或者  h（n-1，m）     （既n取或者不取）
 当然其中  注意到 当 m 
可以直接得出结果。


这个题目不知道有木有解析解。。。如果能求出 （1+x)(1+x^2)(1+x^3)……(1+x^n) 的]]></description><category></category></item><item><title><![CDATA[第19 题： 题目：定义Fibonacci 数列如下： / 0 n=0 f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7790920</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7790920</guid><author>Matrixlibing</author><pubDate>Thu, 26 Jul 2012 20:50:14 +0800</pubDate><description><![CDATA[输入n，用最快的方法求该数列的第n 项。
分析：在很多C 语言教科书中讲到递归函数的时候，都会用Fibonacci 作为例子。

因此很多程序员对这道题的递归解法非常熟悉，但....呵呵，你知道的。


思路：
    f(n) = 1*f(n-1) +1* f(n-2);
   f(n-1)=1*f(n-1)+ 0*f(n-2);
   f(n)        1   1]]></description><category></category></item><item><title><![CDATA[第18 题： 题目：n 个数字（0,1,…,n-1）形成一个圆圈，从数字0 开始每次从这个圆圈中删除第m 个数字（第一个为当前数字本身，第二个为当前数字的下一个数 字）。]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7786930</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7786930</guid><author>Matrixlibing</author><pubDate>Wed, 25 Jul 2012 23:30:21 +0800</pubDate><description><![CDATA[当一个数字删除后，从被删除数字的下一个继续删除第m 个数字。
求出在这个圆圈中剩下的最后一个数字。


思路：
      把这个题目中的开始数字改下以便下面的说明，n 个数字（1,…,n-1,n）形成一个圆圈，从数字1 开始每次从这个圆圈中删除  第（第说明与开始数字无关）m 个数字（第一个为当前数字本身，第二个为当前数字的下一个数 字）。
     这个是Josephus问题的推广]]></description><category></category></item><item><title><![CDATA[第15 题： 题目：输入一颗二元查找树，将该树转换为它的镜像，]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7782345</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7782345</guid><author>Matrixlibing</author><pubDate>Tue, 24 Jul 2012 21:54:16 +0800</pubDate><description><![CDATA[即在转换后的二元查找树中，左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。
例如输入： 
        8
       / \
      6 10
      /\ /\
    7 9 11

输出： 
          8
      /     \
   10     6
     /\      /\
  11 9 7 5

定义]]></description><category></category></item><item><title><![CDATA[6.给你10 分钟时间，根据上排给出十个数，在其下排填出对应的十个数]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7745664</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7745664</guid><author>Matrixlibing</author><pubDate>Sun, 22 Jul 2012 15:23:44 +0800</pubDate><description><![CDATA[要求下排每个数都是先前上排那十个数在下排出现的次数。上排的十个数如下：
【0，1，2，3，4，5，6，7，8，9】
举一个例子，
数值: 0,1,2,3,4,5,6,7,8,9
分配: 6,2,1,0,0,0,1,0,0,0
0 在下排出现了6 次，1 在下排出现了2 次，
2 在下排出现了1 次，3 在下排出现了0 次....
以此类推..



这个题目采用自适应的方法，]]></description><category></category></item><item><title><![CDATA[第14 题： 题目：输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数，使得它们的和正好是输入的那个数字。]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7772507</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7772507</guid><author>Matrixlibing</author><pubDate>Sun, 22 Jul 2012 15:08:31 +0800</pubDate><description><![CDATA[要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字，输出任意一对即可。例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15，因此输出4 和11。


对于数组的任意两个数a、b，a+b = key时满足。我们可以取边a、b，既2个嵌套的for循环，但是这样复杂度是O（n^2)；
 for （ a++ )
for ( b++)
.......
但是在我们这个过]]></description><category></category></item><item><title><![CDATA[第11 题 求二叉树中节点的最大距离...]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7772196</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7772196</guid><author>Matrixlibing</author><pubDate>Sun, 22 Jul 2012 14:08:21 +0800</pubDate><description><![CDATA[如果我们把二叉树看成一个图，父子节点之间的连线看成是双向的，
我们姑且定义"距离"为两节点之间边的个数。
写一个程序，
求一棵二叉树中相距最远的两个节点之间的距离。


思路：
       要求相距最远的两个节点之间的距离，我们可以这样考虑：由于只有根节点和子节点之间有相连的边
那么，假设最后结果是A和B有最大距离，那么A的根的根...... 与 B的根的根...... 是同样的]]></description><category></category></item><item><title><![CDATA[第10 题 翻转句子中单词的顺序。]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7770395</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7770395</guid><author>Matrixlibing</author><pubDate>Sat, 21 Jul 2012 14:54:50 +0800</pubDate><description><![CDATA[题目：输入一个英文句子，翻转句子中单词的顺序，但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见，标点符号和普通字母一样处理。
例如输入“I am a student.”，则输出“student. a am I”。


思路：
（1） 关键死空格符的位置，记录下每个空格符的位置；
（2）字符串逆置是一个普通的问题，我们可以将这个字符串看成多个字符串；
（3）字符串逆置的方法：]]></description><category></category></item><item><title><![CDATA[第9 题 判断整数序列是不是二元查找树的后序遍历结果]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7770231</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7770231</guid><author>Matrixlibing</author><pubDate>Sat, 21 Jul 2012 13:41:44 +0800</pubDate><description><![CDATA[题目：输入一个整数数组，判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true，否则返回false。
例如输入5、7、6、9、11、10、8，由于这一整数序列是如下树的后序遍历结果：
     8
    / \
  6 10
  / \   / \
5 7 9 11
因此返回true。
如果输入7、4、6、5，没有哪棵树的后序遍历的结果是这个序列，因此返回false]]></description><category></category></item><item><title><![CDATA[2.设计包含min 函数的栈。]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7725834</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7725834</guid><author>Matrixlibing</author><pubDate>Sat, 14 Jul 2012 09:35:17 +0800</pubDate><description><![CDATA[定义栈的数据结构，要求添加一个min 函数，能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。本题的要求是实现O(1)的算法，空间和时间的关系既使用空间来节约时间；定义2个栈，一个是普通的栈，另一个是保存当前最小的元素的栈，由于每次压站或者出站的时候都进行了比较，所以每次min 的时候只要直接输出；时间复杂度都是0（1）；#include 
#include]]></description><category></category></item><item><title><![CDATA[3.求子数组的最大和]]></title><link>https://blog.youkuaiyun.com/Matrixlibing/article/details/7727390</link><guid>https://blog.youkuaiyun.com/Matrixlibing/article/details/7727390</guid><author>Matrixlibing</author><pubDate>Wed, 11 Jul 2012 13:40:49 +0800</pubDate><description><![CDATA[题目：
输入一个整形数组，数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组，每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5，和最大的子数组为3, 10, -4, 7, 2，
因此输出为该子数组的和18。#include 
#include 
#include 

using name]]></description><category></category></item></channel></rss>