StarryNights

每一个你所后悔的现在,都有一个不够努力的曾经

站内检索

循着字句,邂逅星光

搜索文章标题与正文,直达命中的章节

开始一次轻盈的站内探索

从这些主题开始探索

输入关键词

可同时输入多个词语缩小范围

发现内容

在摘要中查看高亮的关键词

快速直达

点击文章或章节标题继续阅读

# 引言

题目链接:https://leetcode.com/problems/reverse-integer/description/

# 题目大意

给出一个32位整型数字(int32), 输出这个数字翻转后的数字。

  • Example1

Input: 123 Output: 321

  • Example2

Input: -123 Output: -321

  • Example3

Input: 120 Output: 21

**Hint**`For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.`

即考虑数字翻转后溢出的问题

# 题解

# 一句话题解

水题, 考虑正负, 按照转换二进制的套路走一波就行

复杂度O(n),其实和数字的位数有关一个常数级别复杂度

# AC代码

c++版本

class Solution
{
  public:
    int reverse(int x)
    {
        int retSymbol = x < 0 ? -1 : 1;
        long long retNum = 0;
        x *= retSymbol;
        while (x)
        {
            retNum *= 10;
            retNum += x % 10;
            x /= 10;
        }
        if ((retNum * retSymbol > INT_MAX) || (retNum * retSymbol < INT_MIN))
        {
            retNum = 0;
        }
        return retNum * retSymbol;
    }
};

go版本

const INT_MAX = int(^uint32(0) >> 1)

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

func reverse(x int) int {
    res := 0
	for 0 != x {
		if INT_MAX / 10 < abs(res) {
			return 0
		}
		res = res * 10 + x % 10
		x = x / 10
	}
	return res
}
更新于 阅读次数 — 次
STARRY NIGHTSPERSONAL NOTES

赞赏

文章至此,故事还在继续。

Seiun

长按或右键保存收款码

文章关联

1 篇关联

顺着引用的连线,读见篇章交错的脉络

展开关系图

拖动平移 · Ctrl / ⌘ + 滚轮缩放 · 点击节点阅读使用 + / − 按钮缩放 · 放大视图后可拖动 · 点击节点阅读单指拖动平移 · 使用 + / − 按钮缩放 · 点击节点阅读

当前文章引用本文
引用列表

引用本文1

  • LeetCode Programming
    AI 摘要

    本文是作者为缓解拖延、练习 Go 语言而开启的 LeetCode 刷题记录,兼作个人题解。文中先介绍 C++ 输入输出加速技巧,通过 ios::sync_with_stdio(false) 解除 C/C++ 流同步、cin.tie(nullptr) 解除 cin 与 cout 绑定来提升效率;随后汇总多道 LeetCode 题解,列出题号、题目、难度及链接,涵盖第1至32题等。

本文引用0

暂无

文章关联