首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

请教一个经典的面试题

2012-03-12 
请问一个经典的面试题上周连续去两个公司面都遇到了同一个问题,结果都没回答出,真是郁闷。问题是这样的。现

请问一个经典的面试题
上周连续去两个公司面都遇到了同一个问题,结果都没回答出,真是郁闷。问题是这样的。现在有好多球,但是球的颜色就10种,让你写段代码来统计每种球的个数。要求时间复杂度最低(好象是n)。
期待高手指导,谢谢

[解决办法]
这个,不简单么?

color List[]={red,black,white,...};
pair<color,int> A[10]={
pair<color,int>(red,0),
pair<color,int>(white,0),
...
};

for( i=0; i<sizeof(List)/sizeof(List[0]); ++i ){
for( j=0; List[i]!=A[j].first; ++j )
;
++A[j].second;
}
[解决办法]
O(10n)=O(n)
[解决办法]
3楼说的hash映射是什么意思哦,本来菜鸟一个哈
[解决办法]
把10种颜色就定为 A[10] 先全赋为0 再一个个选 选到一种颜色 就 A[I]++就行了
最后在输出 就是O(N)
[解决办法]
就是嘛,LS的有道理
[解决办法]
int n; //小球总数
int nHist[10];//存每种颜色小球的数目
for (int i = 0;i < n; i++)
{
nHist[nColor[i]]++;
}

热点排行