首页 新闻 会员 周边 捐助

今天发现了一道面试提,好难哦

0
[已关闭问题]

1.压缩数组,使1,2,2,3,4,4,4,5,6,6,6,7变成1,2,3,4,5,6,7并且返回数组长度为7.

2.用C#或JAVA来实现n!算法?

wsenmin的主页 wsenmin | 初学一级 | 园豆:165
提问于:2009-08-20 01:12
< >
分享
其他回答(3)
0

第一题可以新建一个List<int>,然后遍历数组,判断并加入不重复的数字,最后通过ToArray()返回

第二题不会,我是算法盲

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-08-20 03:52
0

2. 递归函数

int Power(int n)
{

      if (n < 2) return 1;

      return n * Power(n - 1);
}

slokra | 园豆:264 (菜鸟二级) | 2009-08-20 08:37
0

第一题楼上的方法可以实现,虽然效率不高,但如果仅仅是对这几个数字压缩,问题也不大。

其他思路:

1. 如果要压缩的数字较多,建议采用Hashtable来去重。

2. 如果是顺序的,则通过一个状态变量就可以去重。

第二题 也不是很难,如果输出数小于64位的话,用下面函数可以实现,如果再大,见我给的链接

        static public ulong Factorial(ulong n)
        {
            ulong result = 1;

            for (ulong i = 1; i <= n; i++)
            {
                result *= i;
            }

            return result;
        }

http://www.cnblogs.com/eaglet/archive/2009/08/20/1550311.html

 

 

 

 

 

eaglet | 园豆:17139 (专家六级) | 2009-08-20 08:52
0

第一题可以这样:

        var list=new int[]{50,0,2,2,4,4,6,6,7,8,9,9};

        List<int> a=new List<int>();
       
        foreach(int i in list)
        {
            if(!a.Contains(i))
                a.Add(i);
        }

       var array=a.ToArray(); //得到最后的数组

webaspx | 园豆:1973 (小虾三级) | 2009-08-20 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册