我正在玩 codefight,但我真的被困住了
到下面的有效问题。
Problem:
给定整数 n、l 和 r,找到将 n 表示为两个整数 A 和 B 之和的方法数,使得 l ≤ A ≤ B ≤ r。
Example:
对于 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);
}
到目前为止通过了我所有的测试。对于积极和消极也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)