1.一个整型数组,知道长度,里面存放有:负数/正数/零,请求"子串之和最大"的子串,函数返回该子串之和.函数形式:   int   f(int*   array,   int   length);  
          举例:   array   =   {7,6,3,-10,2,-8,6}  
                      和最大的子串为:   7   +   6   +   3   =   16  
                      函数返回:   16  
          建议测试用例:   {7,6,3,-10,200,-8,6}   ->   return   7   +   6   +   3   +   (-10)   +   200   =   206,  
                                      {7,6,3,-100,2,-8,6}   ->   return   2,  
                                      {100,-200,100,-10,100}   ->   return   100   +   (-10)   +   100   =   190.  
          其他情况可另行测试.  

答案如下:
两道MS的面试题 及答案        static int GetMaxString(int[] arr)



2.一个没有排序的链表,比如list={a,l,x,b,e,f,f,e,a,g,h,b,m},请去掉"重复项,并保留原顺序",以上链表去掉重复项后为newlist={a,l,x,b,e,f,g,h,m},请写出一个高效算法(时间比空间更重要)  
          提示:如果采用先排序,在去掉重复项的办法,复杂度为n+nlogn(采用快排),显然不是最优解,而且破还了"原顺序".还有其他解法.  

答案如下:

两道MS的面试题 及答案        static void Main(string[] args)
        }

 



 

相关文章: