给一堆object,随便存在什么datastructure里面,有一个function可以用来判断两个object的相对大小,但不可传递,a>b,b>c 不能推出a>c。找出这堆objects中的其中一个,大于所有其他的objects。
import java.util.LinkedList;
public class FindCelebrityII {
int compare(Object o1, Object o2) {
return o1.toString().compareTo(o2.toString());
}
public Object findmax(LinkedList<Object> objs) {
while (objs.size() > 1) { // remove 1 each round
Object o1 = objs.poll();
Object o2 = objs.poll();
int c = compare(o1, o2);
if (c > 0) {
objs.offer(o1);
} else {
objs.offer(o2);
}
}
return objs.poll();
}
public static void main(String[] args) {
FindCelebrityII s = new FindCelebrityII();
LinkedList<Object> objs = new LinkedList<>();
objs.add("a");
objs.add("c");
objs.add("b");
objs.add("d");
System.out.println(s.findmax(objs));
}
}