java - 找出将 n 表示为两个有边界整数之和的方法的数量

标签 java algorithm nested

我正在玩 codefight,但我真的卡住了 到以下效率问题。

问题:
给定整数 n、l 和 r,找出将 n 表示为两个整数 A 和 B 的和的方式的数量,使得 l ≤ A ≤ B ≤ r。

示例:
对于 n = 6、l = 2 和 r = 4,输出应为 countSumOfTwoRepresentations2(n, l, r) = 2。 只有两种方法可以将 6 写成 A + B,其中 2 ≤ A ≤ B ≤ 4:6 = 2 + 4 和 6 = 3 + 3。

这是我的代码。它通过了所有单元测试但失败了 在隐藏的。有人能以某种方式指导我吗? 提前致谢。

public static int countSumOfTwoRepresentations2(int n, int l, int r) {
    int nrOfWays = 0;
    for(int i=l;i<=r;i++)
    {
        for(int j=i;j<=r;j++)
        {
            if(i+j==n)
                nrOfWays++;
        }
    }
    return nrOfWays;

}

最佳答案

嗯,不需要做那么大的计算……很容易计算:

public static int count(int n, int l, int r) {
    if (l > n/2)
        return 0;
    return Math.min(n/2 - l, r - n/2) + ((n%2 == 1) ? 0 : 1);
}

到目前为止,通过了我所有的测试。也适用于正面和负面。

关于java - 找出将 n 表示为两个有边界整数之和的方法的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39860021/

相关文章:

java - 如果 string.contains() 正确,如何使嵌套循环中断

java - java 中方法的构造函数

java - 在无序数组中找到最近的数字

java - 封闭类成员的内部类访问

java - 在 Java 中反转字符串的最有效算法是什么?

algorithm - 您能说出这种音频压缩算法吗?

jquery - 如何使用 jQuery.tabs() 将水平选项卡嵌套在垂直选项卡下?

java - Maven Hibernate 依赖项 - 选择哪一个?

java - ubuntu下Intellij编译android的hello world项目时出错

java - 将日期保存到 Room 数据库时,TypeConverter 会扰乱数据