LeetCode Go — 7. Целочисленное обращение

алгоритм
LeetCode Go — 7. Целочисленное обращение

Это 25-й день моего участия в Gengwen Challenge.Подробности о мероприятии:Обновить вызов

Для лучшего будущего придерживайтесь чистки зубовLeetCode!

тема

Учитывая 32-битное целое число со знаком x , вернуть результат инвертирования числовых частей x .

Возвращает 0, если инвертированное целое превышает диапазон [−231, 231 − 1] для 32-разрядных целых чисел со знаком.

Предположим, что среда не позволяет хранить 64-битные целые числа (со знаком или без знака).

Пример 1:

输入:x = 123
输出:321

Пример 2:

输入:x = -123
输出:-321

Пример 3:

输入:x = 120
输出:21

Пример 4:  

输入:x = 0
输出:0

намекать:

-231 <= x <= 231 - 1

Решение 1 — Математика

Идеи решения проблем

Получай каждый разxxпоследнюю цифру и добавить к другой цифреrevrevпо последней цифре:

# 获取最后一位
last = x % 10
x = x / 10

# 追加到 rev 的最后一位上
rev = rev * 10 + last

код

func reverse(x int) (rev int) {
    for x != 0 {
        if rev < math.MinInt32/10 || rev > math.MaxInt32/10 {
            return 0
        }
        digit := x % 10
        x /= 10
        rev = rev*10 + digit
    }
    return
}

Результаты

执行用时:0 ms,在所有 Go 提交中击败了 100.00% 的用户
内存消耗:2.1 MB,在所有 Go 提交中击败了 63.53% 的用户

Анализ сложности

  • временная сложность:O(logx)О(лог∣х∣). Количество переворотовxxдесятичные цифры.
  • Сложность пространства:O(1)O(1)

ссылка на тему

7. Целочисленная инверсия

похожие темы