我有一个方法可以返回一个对象的计数,这些对象的值高于ArrayList
中所有对象的平均值。
'用户' object具有存储在其类(级别)中的整数值。
我的方法有效,但我想知道是否有更好的方法来查找所有对象值的平均值?
public int bestPlayers() {
ArrayList<User> players = new ArrayList<User>();
int bestPlayers = 0;
int totalPlayerLevel = 0;
double averageLevel = 0;
for (int i = 0; i < players.size(); i++) {
totalPlayerLevel += players.get(i).level;
}
averageLevel = totalPlayerLevel / players.size();
for (int i = 0; i < players.size(); i++) {
if (players.get(i).level > averageLevel) {
bestPlayers++;
}
}
return bestPlayers;
}
答案 0 :(得分:6)
答案 1 :(得分:2)
您的代码可以在t.py
中使用,因为您通过数组两次。好吧,因为你必须计算平均值,这意味着你必须至少旅行一次,所以没有比t.py
更快的性能选择。
你要做的第二件事,你必须计算出比平均水平高的玩家。这里只有加速可能是你已经排序了数组(之前有,而不是现在计算,因为它的O(n)
,然后你可以找到第一个更高级别然后平均值并计算剩余数量。这将花费{{1但是,由于你计算了平均值,它的性能仍然是O(n)
。