You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求分析findSum算法的时间复杂度(基于大O表示法)

findSum算法的大O复杂度分析

先看你给出的代码:

function findSum(arr,value){
    const set = new Set();
    for (let val of arr) {
      set.add(val);
    }
  
    const res = [];
    
    for (let val of set) {
      const target = value - val
      if (set.has(target)) {
        res.push(val, target);
        break;
      }
    } 
    return res.length > 0 ? res : false;
  }

时间复杂度:O(n)

  • 第一步循环遍历输入数组arr,将每个元素添加到Set中。Set的add操作平均时间复杂度是O(1),所以这部分的时间开销是O(n)(n为arr的元素个数)。
  • 第二步遍历Set,寻找满足val + target = value的元素对。Set的has操作平均也是O(1),最坏情况下需要遍历整个Set(比如找不到符合条件的元素,或者符合条件的元素是Set的最后一个),而Set的最大元素个数等于arr的长度n,所以这部分最坏开销也是O(n)。
  • 把两部分加起来,总时间复杂度是O(n) + O(n) = O(n)。

空间复杂度:O(n)

  • 我们创建了一个Set来存储arr中的元素,最坏情况下arr没有重复元素,Set需要存储所有n个元素,所以空间复杂度是O(n)。
  • 额外的数组res最多存储2个元素,这部分空间是常数级O(1),可以忽略不计。

内容的提问来源于stack exchange,提问作者johnjoker13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:05:14