例如1:如果我有像这样的数字 1 2 3 4 1 3 4 5 6 1 4 5 6 2 1 2
它应该打印1 2 3 4 1 3 4 5 6 1 4 5 6 2 1
,因为1来了4次
例如2:2 3 4 2 2 1 3 4 5 6 7
它应该打印2 3 4 2 2
因为它有最大值
我知道我们必须找到最大出现位的基本方法,然后我们必须在输入数组中搜索该数字的开始和最后一个索引并打印它。
如果可能,我想要任何其他更好的方法。
答案 0 :(得分:2)
Map<Character,FirstAndLast>
中第一次和最后一次出现的索引(见下文)count
最高的地图;选择解决关系的策略first
和last
之间的子字符串,包含最大count
的值。类FirstAndLast
是一个表示一对整数的简单对象:
class FirstAndLast {
private int first, last, count;
public FirstAndLast(int index) { first = last = index; count = 1;}
public int getFirst() { return first; }
public int getLast() { return last; }
public int getCount() { return count; }
public void setFirst(int index) { first = index; }
public void setLast(int index) { last = index; }
public void incrementCount() { count++; }
}