Untitled
unknown
plain_text
2 years ago
843 B
5
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...