日期:2014-05-20  浏览次数:20697 次

高手帮我解决下java问题,看以下问题编遍代码
第一题:找9问题:从1到100找出有多少个9?比如19中含有一个9,99中含有两个9,要求设计函数实现,函数不仅可以找9.还可以找8,找7,6,5,4,3,2,1,0;查找区间定位[1,100].函数原型:intFindNumber(int n),参数n的取值范围0-9.
第二题:现在你有优酷土豆一亿用户观看视频的个数,编写程序统计出用户当天观看视频的中位数,已知文件Wlog.txt有一亿行数据,每行数据包含两列,分别是uidwCount(例如1 3)表明用户1观看了3个视频,数据按照uid排序。
第三题:请至少两种方法写出单列模式(Singleton)的ClassA.

------解决方案--------------------
第一题

static int FindNumber(int n) {
StringBuffer sb = new StringBuffer();
for(int i = 1;i <= 100;++i) sb.append(i);
return sb.toString().replaceAll("[^" + n + "]", "").length();
}

------解决方案--------------------
引用:
顺便把第一题和第二题也算下吧。

如果没有什么好方式的话,
第二题就直接简历一个Map<Integer,Long> map;
统计每个数字出现的数量,然后遍历map.value
用5000W去减,减到0或负数的时候那个key就为中位数。
这样复杂度应该也是O(n)
第三题就是一个懒汉模式和一个饿汉模式,百度搜一下就出来了