Algorithm 从列表中删除图元时更新中间值
给您一个从1到n(没有重复项)的混合整数列表,例如4,2,6,1,5,3和排序列表1,2,3,4,5,6 现在中位数是3.5。当查看排序后的列表1,2,3,4,5,6时,可以在O(1)时间内计算出该值。现在从混合列表中删除4个。是否有一种算法可以在O(1)时间内更新中值?我想从排序的列表中删除索引4-1=3,然后找到它的中间值 这适用于第一次迭代,但不适用于其他迭代,即删除2、6等等。我想知道的是,如果您知道,是否存在更新中值的算法:Algorithm 从列表中删除图元时更新中间值,algorithm,median,Algorithm,Median,给您一个从1到n(没有重复项)的混合整数列表,例如4,2,6,1,5,3和排序列表1,2,3,4,5,6 现在中位数是3.5。当查看排序后的列表1,2,3,4,5,6时,可以在O(1)时间内计算出该值。现在从混合列表中删除4个。是否有一种算法可以在O(1)时间内更新中值?我想从排序的列表中删除索引4-1=3,然后找到它的中间值 这适用于第一次迭代,但不适用于其他迭代,即删除2、6等等。我想知道的是,如果您知道,是否存在更新中值的算法: 上一中位数 已从列表中删除的整数 迭代次数 我知道两种有效
- 上一中位数
- 已从列表中删除的整数
- 迭代次数
所有这些操作都需要O(logN)时间。我知道两种有效解决此问题的方法 第一种算法:
所有这些操作都需要O(logN)时间。1。您可以在O(N)时间内从列表中删除该元素。2.可以使用二元搜索树,在O(logN)时间内执行插入/删除操作,也可以在O(logN)时间内找到中值)。计算介质是
O(n)
,而不是O(1)
。您必须查看所有元素才能计算中值。中位数只能在O(1)
中计算,如果列表是一行“[x,x+n,x+n*2,…”。@SashaMN:为此,你需要一个平衡的BST。@KarolyHorvath不完全平衡,平衡-太强的假设。@SashaMN:谁说“完全”了?1。您可以在O(N)时间内从列表中删除该元素。2.可以使用二元搜索树,在O(logN)时间内执行插入/删除操作,也可以在O(logN)时间内找到中值)。计算介质是O(n)
,而不是O(1)
。您必须查看所有元素才能计算中值。中位数只能在O(1)
中计算,如果列表是一行“[x,x+n,x+n*2,…”。@SashaMN:为此,你需要一个平衡的BST。@KarolyHorvath不完全平衡,平衡-太强的假设。@SashaMN:谁说过“完全”呢?