java - 求和超时如何解决?

标签 java

我正在解决HackerRank(Euler项目,问题1)中的一个非常直接的问题,该问题说要找出低于特定给定数字(n)的所有数字的总和,该数字返回零作为潜水提醒减少 3 或 5 。我写的解决方案如下,

public static int getSum(int n ){

    int sum  = 0;

    for (int j =0; j < n; j++){

        if ( j%3 == 0  || j%5 == 0 ){

            sum += j;
        }      
    }
    return sum; 
}

在 2 个测试用例中,此解决方案超时。如何改进代码?

最佳答案

难道就没有其他办法可以解决吗?

如果n10^6,则循环运行10^6次。

我们可以进一步减少这个吗?

还记得艺术进步系列吗?

a、a + n、a + 2n、...

这和问题之间有什么联系吗?

是的,看3倍数还是5倍数。

3, 3 + 3, 3 + 2 * 3....

第n项之前的总和是多少?

5 多重数使用相同的方法。

我不想因为给你完整的答案而破坏解决欧拉计划问题的乐趣。我给了你一个提示。玩得开心!

<小时/>

PS:这有一个转折。仔细观察。

关于java - 求和超时如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930977/

相关文章:

java - elasticsearch Elasticsearch集成测试

java - 数组值不更新

java - MappedByteBuffer 到位图?

java - 在java中交换字符串中的几个字符?

Java:抽象枚举常量

java - 防止每次读取时发生 DataNucleus 事务

java - 关于jdk中cast的方法

java - 未找到 Spring 应用程序上下文

java - Java 类中方法和字段访问修饰符的简写?

Java 如何在不使用外部库的情况下从毫秒获取月份