gpt4 book ai didi

algorithm - 对来自不同来源的实体的排序列表进行分页

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:29 25 4
gpt4 key购买 nike

我的问题是,我有两个列表,为了简单起见,有 4-4 个项目,这些不是唯一的项目。按计算值排序的项目,我们称之为排名。现在我必须在每页显示 8 个项目中的 2 个项目,但只显示按排名排序的唯一值。

所以我有这两个列表:

列表A

A - 1
B - 2
D - 5
C - 6

列表 B

A - 2
D - 3
B - 4
C - 5

因此,我需要按排名排序的项目的第一页,偏移量为 0 限制为 2,这将是:

首页

A(list A) - 1
B(list A) - 2 // we skip the A from list B because we need unique values

所以第二页应该是:

预期的第 2 页

D(list B) - 3
C(list B) - 5

但实际的第二页,由于偏移量(跳过每个列表中的前两项),将导致:

实际第 2 页

B(list B) - 4
D(list A) - 5 // or C - 5 from list B

值会重复 (B),这显然很糟糕。

现在我能想到的唯一解决方案是将所有列表合并为一个有序列表并在该列表上应用分页,但这是我做不到的事情。我通过 API 访问这些列表,即使它是一个内部 API,我也必须将其视为无法更改的第三方 API。 API 仅接受排序方向(asc、desc)、偏移量和限制参数。

我应该实时显示这些值,如果列表中发生变化,我必须显示这些变化。

有什么建议吗?

最佳答案

我有一个想法。请审核。

假设:两个列表具有相同的条目。

这是解决您问题的示例代码:

node * H_A = List_A.head
node * H_B = List_B.head

while ((H_A == NULL) || (H_B == NULL))
{
// Here I am maintaining an invariant that value pointed by H_B is
// greater than the value pointed by H_A.
if (H_B > H_A)
{
swap (H_B, H_A);
}

Display value of H_A on the current page. This is the first value of the page.

Move H_A to next value.

if (value.H_B > value.H_A)
{
Display value of H_A on the current page. This is the second value of the page.
}
else
{
Display value of H_B on the current page. This is the second value of the page.
}

Move H_A to next value.
Move H_B by two values.
Move to next page. This page is completed.
}

如果不能解决您的问题,请告诉我。我们将致力于此。

关于algorithm - 对来自不同来源的实体的排序列表进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24513007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com