Я практиковал некоторые вопросы, основанные на двоичном поиске, на LeetCode. Я работал над вопросом 1283 (Найди наименьший делитель). Мой код Python каждый раз давал неправильный ответ. Я решил использовать свой локальный отладчик, чтобы увидеть, где я ошибся, но неожиданно мой локальный отладчик дал мне правильный ответ для того же кода. Я связался с другом, который уже ответил на этот вопрос в CPP, и попросил его запустить мой код из его учетной записи, и мое решение было принято в LeetCode из его учетной записи. Публикуя этот вопрос, я еще раз взглянул на вопрос и обнаружил, что при изменении строки 10 s += math.ceil(i/mid) на s += -(-i//mid) (насколько я знаю, оба имеют одинаковое значение), LeetCode принял мое решение из моей учетной записи. Есть ли у кого-нибудь идеи, в чем причина этого. Мне это действительно интересно.
Это мой код
import math
class Solution(object):
def smallestDivisor(self, nums, threshold):
l,r = 1,max(nums)
div = float('inf')
while l <= r:
mid = (l+r)//2
s = 0
for i in nums:
s += math.ceil(i/mid)
if s <= threshold:
div = mid
r = mid - 1
else: l = mid + 1
return div
Я изменил последнюю строку на print(div) для запуска в локальном отладчике.






На вашем скриншоте вы используете Python 2.
Использование компилятора Python 3 даст правильный результат.
Нажмите «Питон».
Выберите «Питон3»
Результат при запуске с использованием Python 3
Большое спасибо. Это объясняет, почему местный переводчик дал мне правильный ответ. Локальный использует Pyhton3