Javascript 对表示时间的字符串进行排序,并取最近的一个
我有这样一个数组:Javascript 对表示时间的字符串进行排序,并取最近的一个,javascript,arrays,string,algorithm,sorting,Javascript,Arrays,String,Algorithm,Sorting,我有这样一个数组: const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Monthly']; const array = ['Monthly', 'Annually', 'Quarterly']; 删除重复项后,我将得到如下数组: const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Mont
const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Monthly'];
const array = ['Monthly', 'Annually', 'Quarterly'];
删除重复项后,我将得到如下数组:
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}];
然后根据顺序计算最小值
你有其他改进算法的建议吗?可以改进吗?一个小改进: 删除重复项是多余的,因为它需要
O(n)
空间或O(nlogn)
时间,因为它是的变体,而查找最小值可以在O(n)
时间和O(1)
空间中完成
另外,不确定您的“顺序”到底是什么,如果它是在编译/预处理时计算一次的值,并且是常量,那么这很好,只要您不为每个查询对列表进行排序,那么“顺序”只是我在执行函数计算最小值时放在那里的一个值