Untitled
unknown
plain_text
2 years ago
843 B
8
Indexable
IEnumerable<Post> MergePosts(IReadOnlyList<List<Post>> list)
{
var res = new List<Post>();
var ptr = new int[list.Count];
for (var i = 0; i < list.Count; i++)
{
ptr[i] = list[i].Count - 1;
}
while (true)
{
var index = 0;
Post? adding = null;
for (var i = 0; i < ptr.Length; i++)
{
if (ptr[i] < 0) continue;
var post = list[i][ptr[i]];
if (adding is null ||
DateTime.Compare(post.CreatedAt, adding.CreatedAt) is var c && c == 1 ||
(c == 0 && post.Id > adding.Id))
{
adding = post;
index = i;
}
}
if (adding is null) break;
ptr[index]--;
res.Add(adding);
}
return res;
}Editor is loading...