你能给我一个关于这个问题的提示吗?我有一个按升序排序的 int 向量,两个元素之间的距离是 v[i+1] - v[i]。例如 v[]={0 , 5, 7 ,8, 10},5 和 0 之间的距离是 5,7 和 5 是 2 等等。我想删除 NB 值(NB 是我要删除的值的数量)这个向量(我不能删除 0 或 10,所以 NB 可能是最大值 3),以便两个元素之间的距离最大。对于此示例,最小距离在 7 和 8 之间...如果我只想删除一个元素(NB=1),我将删除 8,而不是最小距离为 2(5 和 7 之间的距离)。
我做了一个这样的结构: (0,5, diff 5) (5,7 diff 2) (7,8 diff 1) (8,10 diff 2) 然后我按 diff 升序排序,只要 NB 是不是 0 如果它不是 10 或 0,我将从对中删除第二个元素,找到具有该元素的下一个对,当我第一次找到该元素时,将其替换为对中的第一个元素,然后更新差异...在此示例中,我将删除 8,结果将是 (5,7 diff 2) (7,10 diff 3) (0,5, diff 5)。我认为这是非常低效的,因为我必须再次搜索元素。你能给我一个如何提高效率的想法吗?