网上看了很多人的方法,自己也试着写了一个。本来还以为时间复杂度还行,结果在一个在线考试系统上用此算法后,被告知是O(N2)。。。
所以这代码就算是infamous的吧。
public class FindMostEle {
public static int find(int[] arr) {
String searchStr = "";
for (int i : arr) {
searchStr += "/" + String.valueOf(i) + "/";
}
int max = -1;
int ele = -1;
for (int i : arr) {
String s = String.valueOf(i);
String temp = searchStr.replaceAll("/" + s + "/", "");
int num = (searchStr.length() - temp.length()) / (s.length()+2);
if (num > max) {
max = num;
ele = i;
}
searchStr = temp;
}
System.out.println(max);
return ele;
}
/**
* @param args
*/
public static void main(String[] args) {
int[] in = {11, 11, 111, 1, 1111, 11, 3311, 111, 111, 111, 11};
System.out.println(find(in));
}