排序表示时间并取最近的字符串

时间:2015-12-10 21:23:07

标签: javascript arrays string algorithm sorting

我有一个这样的数组:

const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Monthly'];

删除重复项后,我应该得到一个这样的数组:

const array = ['Monthly', 'Annually', 'Quarterly'];

现在我应该得到最短的时间。我曾想过将每个字符串与一个数字相关联,从而以这种方式转换数组:

const array = [{name:'Monthly', order:1}, {name:'Annually',order:3}, {name:'Quarterly',order:2}];

然后根据订单计算最小值。

您是否有其他建议来改进算法?可以改进吗?

1 个答案:

答案 0 :(得分:1)

一个小改进:

删除重复项是多余的,因为它需要O(n)空间或O(nlogn)时间,因为它是element distinctness problem的变体,而查找最小值可以在{{1}中完成时间和O(n)空间。

另外,不确定你的"命令"确切地说,如果它是在编译/预处理时计算过的并且是常量的,那么只要你不为每个查询排序列表就可以了