[英]Sort string that express a time and take the one closest
我有一个像这样的数组:
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)
空间。
另外,不确定您的“顺序”到底是什么,如果它是在编译/预处理时计算一次并且是常数的,那很好,只要您不对每个查询的列表进行排序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.