首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码测试中的NumberOfDiscIntersections超时

代码测试中的NumberOfDiscIntersections超时
EN

Stack Overflow用户
提问于 2020-07-03 17:21:26
回答 1查看 212关注 0票数 1

我的代码被认为是正确的,但是对于交集数量非常多的输入数组,它会超时。

NumberOfDiscIntersections

如何才能降低解决方案的复杂性并使其更高效?

代码语言:javascript
复制
function solution(A) {
    let ret = 0;
    for(let i = 0; i < A.length; i++){
        const a = A[i];
        for(let j = i+1; j < A.length; j++){
            const b = A[j];
            if(i+a >= j-b){
                ret++;
                if(ret > 10000000){
                    return -1;
                }
            }
        }
    }
    return ret;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 20:00:07

获取间隔:

代码语言:javascript
复制
A[0] = 1 -> (-1, 1)
A[1] = 5 -> (-4, 6)
A[2] = 2 -> (0, 4)
A[3] = 1 -> (2, 4)
A[4] = 4 -> (0, 8)
A[5] = 0 -> (5, 5)

拆分间隔,并用"start“和"end”标记间隔,然后对它们进行排序:

代码语言:javascript
复制
(-4s,6e) (-1s,1e) (0s,4e) (0s,8e) (2s,4e) (5s,5e)

-4s -1s 0s 0s 1e 2s 4e 4e 5s 5e 6e 8e

s means start
e means end

从左到右迭代,保持静止打开间隔的计数,并添加与当前起始点重叠的仍然打开的间隔的数量。

代码语言:javascript
复制
     open  overlaps
-4s:   1     0
-1s:   2     1
 0s:   3     2
 0s:   4     3
 1e:   3
 2s:   4     3
 4e:   3
 4e:   2
 5s:   3     2
 5e:   2
 6e:   1
 8e:   0
 
 Total       11
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62712363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档