JS中的功能链的大O

问题描述

如果我有类似的东西

function aclean(arr) {
    let results = new Map();

    arr.forEach((word) => {
        const lc = word.toLowerCase().split('').sort().join('');

        if (!results.has(lc)) results.set(lc,word);
    });

    return Array.from(results.values());
}

哪个单词由单词组成,并通过按字母顺序对单词进行排序,将其存储为Map键并存储未排序的单词(它找到的第一个)作为其值,然后继续进行字谜过滤。然后,它返回一个Map值数组。

因此,对于['bat,'tab','bike'],它将返回['bat,'bike'],因为'bat'是找到的'bat'的首个字谜,因此'tab'被删除。

对于这个功能,我在我的假设中是正确的:

  • arr.forEach为N-每个单词被访问一次。

    -然后进入循环

  • toLowerCase是〜C,因为每个字符都被访问一次并转换

  • 拆分为C

  • 排序是〜C Log(C),假设是快速排序

  • 在访问每个字符并将其添加到新数组时,
  • join仍为C。

    -外循环

  • results.has和.set是常量

  • Array.from(results.values())为R,因为每个值都将在Map中访问并推入新数组。

所以总的来说,我有N *(很多C + C .. + C Log(C)... + C)+ R 简化为N * C Log(C)+ R-其中C是最大的字符串长度?

我假设我可以取消R,因为它的影响将远小于其他两个术语?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...