我正在尝试编写一个程序,查找领导编号在数组中。有一定的时间限制,代码无法满足它们。任何可能的代码优化建议,以满足这些约束。如果可能,请提供代码片段。
Leader Number:大于其右侧所有元素的元素为Leader
代码:
static ArrayList<Integer> leaders(int arr[], int n){
ArrayList<Integer> arrlst = new ArrayList<Integer>();
int highest_val = arr[n-1];
arrlst.add(highest_val);
for(int i=n-2;i>-1;i--)
{
if(arr[i]>=highest_val){
highest_val = arr[i];
arrlst.add(0, highest_val);
}
}
return arrlst;
}
你是在索引0处添加新的最高值,因此你总是将之前的所有leader向下移动一个。也许把它们加在最后,然后把列表倒过来?