Я пробовал эту проблему при вызове leetcode Plus One.Почему разница во времени?
Учитывая неотрицательное число, представленное в виде массива цифр, плюс один к числу. Цифры хранятся так, что самая значимая цифра находится во главе списка.
У одного из моих решений было время работы 380 мс. Я жестко закодировал некоторые значения, а время работы увеличилось до 412 мс. Может ли кто-нибудь объяснить, что вызывает это изменение? Я думал, что время выполнения уменьшится, так как значения не будут вычислены.
Вот код с запуском время 380ms:
public int[] plusOne(int[] digits) {
int len = digits.length;
digits[len - 1] += 1;
if(digits[len - 1] < 10) {
return digits;
}
else {
//for(int i = len - 1; i >= 0; i--)
int i = len - 1;
while(digits[i] > 9) {
if(i == 0) {
int[] ans = new int[digits.length + 1];
ans[0] = digits[0]/10;
ans[1] = digits[0] % 10;
for(int n = 1; n < len; n++) {
ans[n + 1] = digits[n];
}
return ans;
}
else {
int last = digits[i];
digits[i] = last % 10;
digits[i - 1] += last/10;
i--;
}
}
return digits;
}
}
Это один взял 412ms:
public int[] plusOne(int[] digits) {
int len = digits.length;
digits[len - 1] += 1;
if(digits[len - 1] < 10) {
return digits;
}
else {
//for(int i = len - 1; i >= 0; i--)
int i = len - 1;
while(digits[i] > 9) {
if(i == 0) {
int[] ans = new int[digits.length + 1];
ans[0] = 1;
ans[1] = 0;
for(int n = 1; n < len; n++) {
ans[n + 1] = digits[n];
}
return ans;
}
else {
int last = digits[i];
digits[i] = 0;
digits[i - 1] += 1;
i--;
}
}
return digits;
}
}
ли это средний результат, или запустить его только один раз? Поскольку удержание времени только на один прогон, это не так эффективно, потому что многие факторы могут внести свой вклад в долгосрочной перспективе. –
Выполняете ли вы это на специализированной машине с повторяемыми результатами или нагрузка на машины и, следовательно, время проведения теста несколько случайное? –
Я не запускал это на своей машине. Я отправил код в LeetCode OJ, и именно там я увидел разницу во времени выполнения. Спасибо всем за ответы! :) Есть много, чтобы учиться, и вы все наверняка добавили мне свои знания. – strider14