Я пытался решить следующую проблему: https://leetcode.com/problems/add-digits/Числовой добавление в C++
Следующий метод принял 12ms завершить все испытания:
int addDigits(int num) {
return 1+((num-1)%9);
}
тогда следующие брали только 8ms:
int addDigits(int num) {
return ((num-1)%9)+1;
}
Почему существует такая значительная разница, когда я добавляю 1 в конце, а не в начале? Должны ли мы всегда ставить константы в конце при расчете?
Я думаю leetcode измеряет время для вас, но эти результаты надежно reprocucable? Вы всегда получаете одинаковые цифры? Вы пробовали другие варианты? Например. что-то вроде 'int result = 1; return result + ((num-1)% 9);' vs 'int result = ((num-1)% 9); return result + 1;' vs 'int result = ((num-1)% 9); return 1 + result; '? – user463035818
Пожалуйста, опубликуйте компилятор и его аргументы. Я буквально не могу заставить компиляторы генерировать другой код для этих функций. –
@ tobi303 Я всегда получаю одинаковые цифры. –