Codefights Loop tunel Q2

时间:2016-12-02 08:31:55

标签: python python-3.x loops

我无法通过此问题的隐藏测试。谁能告诉我我的代码有什么问题?

错误消息是:

  

“测试7超出了执行时间限制:程序超出了执行时间限制。确保在几秒钟内完成任何可能的输入执行。”

我的代码:

FIELD2    |  FIELD3   |  Valley 1   | Valley 2 | Valley 3 |  Valley 4 | Valley 5 
----------|-----------|-------------|----------|----------|-----------|---------
Increments|           | NULL        |  NULL    |    NULL  |   NULL    |  NULL  

2 个答案:

答案 0 :(得分:0)

我想你的问题是:

  

给定整数n,l和r,找到将n表示为两个>整数A和B之和的方式的数量,使得l≤A≤B≤r。

在代码中添加2个for循环可能会增加代码的时间复杂度,因为它是一种天真的方法。你应该试试这个:

def countSumOfTwoRepresentations(n,l,r):
    result = 0
    for a in range(1,r+1):
        b = n - a
        if(b >= l and b <= r and b >= a):
            result+=1
    return result

答案 1 :(得分:-1)

在此存储库中,您可以找到Codefights Arcade解决方案

https://github.com/tigranv/Code_Fights_Solutions

int countSumOfTwoRepresentations2(int n, int l, int r) {

    int count = 0;

    for(int i = l; i<=r; i++)
    {
      for(int j = i; j<=r&&n-j>=l; j++)
    {
     if(i+j == n)  count++;
    }  

    }

    return count;
}