Наткнулась я сегодня на LeetCode на, казалось бы, простую задачку: Given an array nums of integers, return how many of them contain an even number of digits. Надо просто из массива чисел найти сколько из них имеют чётное количество цифр.
Думаю, многие решат эту задачку обычным делением. Я тоже изначально так сделала, а потом начала искать более оптимальные способы и нашла статью: https://www.baeldung.com/java-number-of-digits-in-int#3-repeated-multiplication
И вот интересные выводы, которые я сегодня сделала:
- Это мне посоветовал друг. Чтобы оценивать, что сложнее: умножение, деление или логарифм — надо взять листочек, два числа и выполнить каждое действие с ними. Будет очевидно, что умножение самое простое и экономит примерно 30% времени;
- Логарифм самый сложный. И это не только на листочке. Во-первых, даже смотреть на формулу сложно. А во-вторых, там внутри есть ещё перевод int в double и обратно;
- Варианты со String и сравнением я сразу отбросила. Они даже выглядят не очень. Если я в проекте применю где-то такое сравнение, то, боюсь, моего тимлида потом придётся отпаивать вином и валерьянкой;
- Даже самая простая задачка может привести к интересным выводам.
А ещё я тут познаю codeforces и topcoder. Визуально они выглядят намного хуже чем литкод, но я решила дать и им шанс.