【发布时间】:2023-03-24 21:45:01
【问题描述】:
很好的建议,但其中一些是不允许的(作为流),是非常有限的任务。我一直在寻找 Leo 的算法。
我正在尝试比较 arraylist 元素上的特定字母,并且需要从 arraylist 中删除每个较大的字母。这必须在线性时间内完成,因此remove() 不是一个选项。我该怎么做?
int deleted = 0;
int n = 0;
while (n < A.size()) {
if (A.get(n).compareTo(x) > 0) {
//removing here
removed = removed + 1;
}
n++;
}
return removed;
A 是一个带有随机字母的数组列表,x 也是一个随机字母。我需要从A 中删除每个大于给定x 字母的元素。 Remove() 不是一个选项,因为我需要在线性时间内执行此操作,而不是 n^2。
【问题讨论】:
-
列表排序了吗?
-
@WillemVanOnsem 不,它没有排序,我无法排序。
-
请添加一个真实的minimal reproducible example,并附上示例数据,我们可以理想地运行这些数据来重现您打算解决的问题。
-
@Dici 这是作业,我坚持使用arraylist
-
@k5_:
ArrayList具有动态大小,摊销成本使得添加 n 个元素是线性的(参见cs.stackexchange.com/questions/63752/…)因此,只需添加元素。
标签: java arraylist time-complexity