今天去面试,居然让我写算法,
都十多年没看过算法了,平时工作的时候也不是很重视,当然是歇菜了。
想起那个算法题,其实很简单,哎,记录下吧。
问题:
一个char数组,
char[] chars = {'a', 'f', 'c', 'a', 'a', 'f', 'f', 'a', 'g', 'm', 'm', 'g', 'h', 'f', 'z','f'};
要求通过sort方法,得出出现频次最高的char
粗糙的算法如下:
private char sort() {
// 最大值,如果要出现最多那个char的频次数值,需要加1,因为这个max不包含自身
int max = 0;
//返回用的char
char result = 0;
for (int i = 0; i < chars.length; i++) {
int submax = 1;//当前循环最大值
for (int j = i + 1; j < chars.length; j++) {
if (chars[i] == chars[j]) {
submax += 1; //当char相等,当前循环最大值+1
}
}
if (submax > max) {
max = submax;
result = chars[i];
}
}
return result;
}
有个问题,如果有两个char频次一样的,应该是取第一个。
先记录下,后续有效率更高的,再来更新。
哎,平时要多做记录积累啊。。
网友评论