我正在解决一个 HackerRank 测验,其中包括模拟分页请求。
该函数接收一个项目数组、排序参数、排序顺序、页码和每页的项目,并返回与给定页面对应的名称数组。
这些物品有形状[name: string, relevance: int, price: int]
。
排序参数为 0 表示名称,1 表示相关性,2 表示价格。
排序顺序为 0 表示升序,1 表示降序。
我在 JavaScript 和 Python 中尝试了该函数,以防默认排序函数的工作方式不同并改变结果。这是我在Python3中的实现。
def fetchPaginated(items, sortParameter, sortOrder, pageNum, itemsPerPage): sortedItems = sorted(items, key=lambda item: item[sortParameter], reverse=False if sortOrder == 0 else True) paginatedIdx = pageNum * itemsPerPage slicedItems = sortedItems[paginatedIdx:(paginatedIdx + itemsPerPage)] return map(lambda item: item[0], slicedItems)
由于 HackerRank 隐藏了测试用例,因此我不知道失败测试的输入。我记得数组的大小是 100 到 1000 的顺序,页码在 0 到 2 之间,每页的项目在 1 到 20 之间。排序参数和顺序没有模式(它不像所有失败的测试都是针对排序参数 1 或类似参数)。
有人可以告诉我我的代码或其背后的算法是否存在我未检测到的缺陷吗?也许是一个导致它在边缘情况下失败的缺陷?
隔江千里
相关分类