5

我试图解决以下问题:https ://leetcode.com/problems/add-digits/

以下方法用了 12ms 完成所有测试:

int addDigits(int num) {
    return 1+((num-1)%9);
}

而以下只用了 8ms:

int addDigits(int num) {
    return ((num-1)%9)+1;
}

当我在末尾而不是开头添加 1 时,为什么会有如此显着的差异?在计算时我们应该总是把常数放在最后吗?

4

1 回答 1

1

这是不可重现的。两个版本在多个编译器下生成完全相同的汇编代码。输出也与 相同-O3

请参阅https://godbolt.org/g/K6PZM5

于 2017-05-14T02:20:37.167 回答