LeetCode刷题第7题【整数反转】---解题思路及源码注释

LeetCode刷题第7题【整数反转】—解题思路及源码注释

结果预览

代码执行效果

目录

  • LeetCode刷题第7题【整数反转】---解题思路及源码注释
    • 结果预览
    • 一、题目描述
    • 二、解题思路
      • 1、问题理解
      • 2、解题思路
    • 三、代码实现及注释
      • 1、源码实现
      • 2、代码解释
    • 四、执行效果
      • 1、时间和空间复杂度分析

一、题目描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

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

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

-231 <= x <= 231 - 1

二、解题思路

1、问题理解

该问题的关键在于如何处理整数反转,并且避免在反转过程中超出 32 位整数的范围。

2、解题思路

  • 问题分析
    该问题的关键在于如何处理整数反转,并且避免在反转过程中超出 32 位整数的范围。具体的步骤如下:
    • 反转数字:通过取余和除法的方法提取数字的每一位,然后将其反转。
    • 溢出处理:在反转过程中,我们需要检查是否超出了 32 位有符号整数的范围。
    • 负数的处理:我们需要正确处理负数,反转时应保留负号。
  • 步骤:
    • 处理负数:如果输入的数字是负数,则反转后的结果应该保留负号。可以在反转完成后加上负号。
    • 反转数字:利用取余和除法,我们可以从数字的末尾开始获取每一位,依次构建反转后的数字。
    • 溢出判断:在反转过程中,如果结果超过了 2^31 - 1(即 2147483647)或小于 -2^31(即 -2147483648),则返回 0。
  • 细节:
    • 负数:处理负数时,可以先将其转换为正数进行处理,最后再加上负号。
    • 溢出:反转时,我们需要判断反转的结果是否会超出 32 位整数的范围。在每次计算反转时,可以在放入新数字前判断是否会溢出。

三、代码实现及注释

1、源码实现

class Solution {
public:
    int reverse(int x) {
        int result = 0;
        
        while (x != 0) {
            int digit = x % 10;  // 提取最后一位数字
            x /= 10;  // 去除最后一位数字
            
            // 判断是否会溢出
            if (result > INT_MAX / 10 || (result == INT_MAX / 10 && digit > 7)) {
                return 0;  // 超出正整数的范围
            }
            if (result < INT_MIN / 10 || (result == INT_MIN / 10 && digit < -8)) {
                return 0;  // 超出负整数的范围
            }
            
            result = result * 10 + digit;  // 将数字加到反转结果的末尾
        }
        
        return result;
    }
};

2、代码解释

  • reverse 函数:
    • 该函数的作用是反转给定的整数 x,并返回反转后的结果。
  • while (x != 0):
    • 我们在循环中处理每一位数字,直到 x 为 0。
  • int digit = x % 10:
    • 获取当前数字的最后一位。
  • x /= 10:
    • 去除数字的最后一位,准备处理下一位。
  • 溢出判断:
    • 判断是否会溢出:
      • 如果 result 大于 INT_MAX / 10 或者 result 等于 INT_MAX / 10 且当前数字 digit 大于7,那么反转会超出正整数的范围。
      • 如果 result 小于 INT_MIN / 10 或者 result 等于 INT_MIN / 10 且当前数字 digit 小于-8,那么反转会超出负整数的范围。
  • result = result * 10 + digit:
    • 将当前数字添加到 result 的末尾,形成反转后的结果。
  • 返回结果:
    • 当 x 为 0 时,退出循环并返回反转后的结果。

四、执行效果

代码执行效果

1、时间和空间复杂度分析

  • 时间复杂度:O(log(x)),其中 x 是整数的绝对值。每次通过取余操作去掉 x 的一位数字,因此需要 O(log(x)) 次操作。
  • 空间复杂度:O(1),我们只使用了常数空间来存储 result 和 digit。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

相机闪光灯拍照流程分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、Flash 基础知识二、MTK 闪光灯拍照log分析 一、Flash 基础知识 1.1 Flash HAL 场景枚举值 Flash HAL 场景枚举值 1.2 AE AF mode State 枚举值 AE …

给本地模型“投喂“数据

如何训练本地Deepseek-r1:7b模型 在前面两篇文章中&#xff0c;我在自己的电脑的本地部署了Deepseek的7b的模型&#xff0c;并接入到我Chrome浏览器的插件中&#xff0c;使用起来更方便了。在使用的过程中发现7b的推理能力确实没有671满血版本的能力强&#xff0c;很多问题回答…

大脑网络与智力:基于图神经网络的静息态fMRI数据分析方法|文献速递-医学影像人工智能进展

Title 题目 Brain networks and intelligence: A graph neural network based approach toresting state fMRI data 大脑网络与智力&#xff1a;基于图神经网络的静息态fMRI数据分析方法 01 文献速递介绍 智力是一个复杂的构念&#xff0c;包含了多种认知过程。研究人员通…

原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

学习总结三十二

map #include<iostream> #include<map> using namespace std;int main() {//首先创建一个map对象map<int, char>oneMap;//插入数据oneMap.insert(pair<int, char>(1, A));oneMap.insert(make_pair(2,B));oneMap.insert(map<int,char>::value_ty…

AI如何与DevOps集成,提升软件质量效能

随着技术的不断演进&#xff0c;DevOps和AI的融合成为推动软件开发质量提升的重要力量。传统的DevOps已经为软件交付速度和可靠性打下了坚实的基础&#xff0c;而随着AI技术的加入&#xff0c;DevOps流程不仅能提升效率&#xff0c;还能在质量保障、缺陷预测、自动化测试等方面…

ESP学习-1(MicroPython VSCode开发环境搭建)

下载ESP8266固件&#xff1a;https://micropython.org/download/ESP8266_GENERIC/win电脑&#xff1a;pip install esptools python.exe -m pip install --upgrade pip esptooo.py --port COM5 erase_flash //清除之前的固件 esptool --port COM5 --baud 115200 write_fla…

解决DeepSeek服务器繁忙问题

目录 解决DeepSeek服务器繁忙问题 一、用户端即时优化方案 二、高级技术方案 三、替代方案与平替工具&#xff08;最推荐简单好用&#xff09; 四、系统层建议与官方动态 用加速器本地部署DeepSeek 使用加速器本地部署DeepSeek的完整指南 一、核心原理与工具选择 二、…

在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程

既然我们已经在本地部署了DeepSeek,肯定希望能够利用本地的模型对自己软件开发、办公文档进行优化使用,接下来就先在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档的教程奉上。 前提: (1)已经部署好了DeepSeek,可以看我的文章:个人windows电脑上安装DeepSe…

CentOS-Stream 9安装

文章目录 1 CentOS9安装引导界面2 CentOS9安装过程2.1 语言选择2.2 安装项选择2.2.1 安装目标位置2.2.2 软件选择2.2.3 网络和主机名2.2.4 root密码2.2.5 创建用户 2.3 开始安装2.4 等待安装成功 3 安装成功 1 CentOS9安装引导界面 选择Install CentOS Stream 9后按Enter键&…

【神经网络框架】非局部神经网络

一、非局部操作的数学定义与理论框架 1.1 非局部操作的通用公式 非局部操作(Non-local Operation)是该研究的核心创新点,其数学定义源自经典计算机视觉中的非局部均值算法(Non-local Means)。在深度神经网络中,非局部操作被形式化为: 其中: 1.2 与传统操作的对比分析…

RAG科普文!检索增强生成的技术全景解析

RAG 相关技术的八个主题&#xff1a;https://pub.towardsai.net/a-taxonomy-of-retrieval-augmented-generation-a39eb2c4e2ab 增强生成 (RAG) 是塑造应用生成式 AI 格局的关键技术。Lewis 等人在其开创性论文中提出了一个新概念面向知识密集型 NLP 任务的检索增强生成之后&…

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…

STM32G474--Linpack程序移植笔记

1 获取测试程序 直接将该页面的测试程序复制到新建的linpack.c文件中即可。 Linpack测试程序 2 移植程序 2.1 准备基本工程 参考这篇笔记从我的仓库中选择合适的基本工程,进行程序移植。这里我用的是stm32g474的基本工程。 使用git clone一个指定文件或者目录 2.2 在基本…

【2025深度学习系列专栏大纲:深入探索与实践深度学习】

第一部分:深度学习基础篇 第1章:深度学习概览 1.1 深度学习的历史背景与发展轨迹 1.2 深度学习与机器学习、传统人工智能的区别与联系 1.3 深度学习的核心组件与概念解析 神经网络基础 激活函数的作用与类型 损失函数与优化算法的选择 1.4 深度学习框架简介与选择建议 第2…

对PosWiseFFN的改进: MoE、PKM、UltraMem

先从PosWiseFFN说起 class PoswiseFeedForwardNet(nn.Module):def __init__(self):super(PoswiseFeedForwardNet, self).__init__()self.fc nn.Sequential(nn.Linear(d_model, d_ff, biasFalse),nn.GeLU(),nn.Linear(d_ff, d_model, biasFalse))def forward(self, inputs): …

web第三次作业

弹窗案例 1.首页代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</title><st…

计数排序

目录 计数排序原理和步骤&#xff1a; 完整代码实现&#xff1a; 计数排序原理和步骤&#xff1a; 当一段数据比较集中在一个范围&#xff0c;比如 98&#xff0c;95&#xff0c;98&#xff0c;91&#xff0c;90&#xff0c;93&#xff0c;94&#xff0c;97&#xff0c;93&…

安装OpenXR运行时 微软Windows Mixed Reality的OpenXR

1、下载openxr示例代码 https://github.com/KhronosGroup/OpenXR-SDK-Source.git mkdir build\win64 cd build\win64 2、编译会生成可执行文件 C:\Work\github\OpenXR-SDK-Source\build\win64\src\tests\hello_xr\Debug\hello_xr.exe 执行 C:\Work\github\OpenXR-SDK-Source\b…

伯克利 CS61A 课堂笔记 07 —— Lists

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理&#xff0c;全英文内容&#xff0c;文末附词汇解释。 目录 01 Lists 列表 02 Containers 容器 03 For Statements For 语句 04 Ranges 范围 05 List Comprehensions 列表理解 06 Box-and-Pointer Nota…