力扣(LeetCode)7. 整数反转(C++)

news2025/8/7 7:50:40

模拟

整数反转,需要一个中间变量 a n s ans ans , 循环存入 x x x 的最低位 x % 10 x\%10 x%10, 然后 x = x / 10 x = x/10 x=x/10 ,得到 x x x 新的最低位 。如果进入新的循环, a n s × 10 ans\times 10 ans×10 ,让上一次的 a n s ans ans 十进制左移一位。重复上述操作,即可得到 a n s ans ans

朴素解法

因为这题有整形溢出问题,这里使用 l o n g   l o n g long~long long long 仅演示上述操作,在下一个解法分析边界。

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

时间复杂度 O ( l o g n ) O(logn) O(logn) n n n x x x 的大小,时间复杂度 O ( l o g 10 n ) O(log_{10}n) O(log10n)

空间复杂度 O ( 1 ) O(1) O(1) 除若干变量使用的常量级空间,没有使用额外的线性空间。

整型解题

题目限制,必须使用 i n t int int 存数 。 考虑正数溢出条件, 发生在 a n s ∗ 10 + x % 10 > I N T _ M A X ans * 10 + x \%10>INT\_MAX ans10+x%10>INT_MAX 的情况下,
推导可得, a n s > I N T _ M A X − x % 10 10 ans>\dfrac{INT\_MAX - x\%10}{10} ans>10INT_MAXx%10 的情况下,整形溢出。

同理,负数溢出发生在 a n s < I N T _ M I N − x % 10 10 ans<\dfrac{INT\_MIN - x\%10}{10} ans<10INT_MINx%10 的情况下。设置边界 , 本题得解。

class Solution {
public:
    int reverse(int x) {
        int ans = 0;
        while(x){
            if(x>0 && ans > (INT_MAX - x%10)/10) return 0;
            if(x<0 && ans < (INT_MIN - x%10)/10) return 0;
            ans*=10;
            ans +=x%10;
            x/=10;
        }
        return ans;
    }
};

时间复杂度 O ( l o g n ) O(logn) O(logn) n n n x x x 的大小,时间复杂度 O ( l o g 10 n ) O(log_{10}n) O(log10n)

空间复杂度 O ( 1 ) O(1) O(1) 除若干变量使用的常量级空间,没有使用额外的线性空间。

博主致语

理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。

AC

AC

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Makefile 基础(一) —— 自定义变量、预定义变量、自动变量

目录 一、自定义变量 1、定义变量 2、使用变量 3、修改变量的值 二、预定义变量 三、自动变量 一、自定义变量 1、定义变量 变量定义有两种方式&#xff0c;一种会在使用的时候递归展开&#xff0c;一种是直接赋值。两种定义方式如下&#xff1a; 递归展开&#xff1a…

Servlet的基本使用

目录 一、Servlet是什么 二、Servlet的基本使用 1、创建项目 2、引入依赖 3、创建目录 4、编写代码 5、打包程序 6、部署程序 7、验证程序 三、优化部署方式 1、安装Smart Tomcat 2、使用Smart Tomcat 四、使用Servlet时常见的错误 1、404 2、405 3、500 4、…

Linux文件目录之查看篇【cat、more、less、head、tail、>、>>】【简直不要太详细】

目录cat 查看文件内容morelessecho&#xff1a;将输入内容到控制台>指令和>>指令&#xff1a; >输出重定向 &#xff0c;>>追加head:tailcat 查看文件内容 cat【选项】 【要查看的文件】 -n 显示行号 注意&#xff1a;cat只能浏览文件&#xff0c;并不能修…

第二章--应用层

2.1应用层协议原理 研发网络应用程序的核心是写出能够运行在不同的端系统和同构网络彼此通信的程序&#xff0c;将应用软件限制在端系统&#xff0c;从而促进大量的网络应用程序的迅速研发和部署。 2.1.1网络应用程序体系结构 应用程序的体系不同于网络的体系结构&#xff0c…

实验(二):单片机数据区传送程序设计

一、实验目的与任务 实验目的&#xff1a; 1. 掌握单片机C语言程序设计和调试方法&#xff1b; 2. 了解单片机RAM中的数据操作。 任务&#xff1a; 1.根据要求编写程序&#xff0c;并写出原理性注释&#xff1b; 2. 检查程序运行的结果&#xff0c;分析一下是否正确&#xff1…

leetcode 42.接雨水,leetcode 503. 下一个更大元素Ⅱ

“即使到不了远方&#xff0c;心中也要有远方的模样。” 文章目录1.leetcode 503. 下一个更大元素Ⅱ1.1 详细思路及步骤1.2 java版代码示例2.leetcode 42.接雨水2.1 详细思路及步骤2.2 java版代码示例1.leetcode 503. 下一个更大元素Ⅱ 1.1 详细思路及步骤 这题基本上和昨天总结…

GoWeb从无到有(读取配置文件、gin、gorm)

GoWeb从无到有 – 读取配置文件、gin、gorm 创建go项目&#xff0c;结构如下 1. golang读取配置文件 引入包 go get -u gopkg.in/ini.v1在main.go的同级目录创建config文件夹&#xff0c;在文件夹中创建配置文件 config.ini # 项目配置 [app] Port8010 # mysql配置 [mysql] …

C++初阶 Stack和Queue的介绍和使用

作者&#xff1a;小萌新 专栏&#xff1a;C初阶 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客介绍&#xff1a;本篇博客会简单的介绍STL中的栈和队列 本章目标 复习下栈这种数据结构特点知道怎么使用STL中的栈复习下队列这种数据结构的特点知道怎么使用STL中…

多功能螯合剂FAPI-04-NH2,FAPI04-氨基,含有DOTA配体显示出良好的药代动力学

NH2-FAPI-04产品描述&#xff1a; FAPI是FAP的特异性抑制剂。在这些FAPI中&#xff0c;含有DOTA配体(FAPI-04)的[68Ga]Ga-DOTA-FAPI-04 PET/CT能显示出良好的体内药代动力学&#xff0c;导致快速kidney​清除和注射后10分钟至3小时的低背景活性。不久之后&#xff0c;[68Ga]Ga-…

Mybatis+Mybatis-plus+SpringBoot整合(完整版)

文章目录一、Mybatis&#xff08;一&#xff09;Mybatis简介1、Mybatis历史2、Mybatis特性3、Mybatis下载4、和其它持久化层技术对比&#xff08;二&#xff09;搭建Mybatis1、MySQL不同版本的注意事项2、创建Maven工程1、引入依赖3、创建MyBatis的核心配置文件3.1、核心配置文…

SpringMVC学习笔记

目录 SpringMVC 为什么出现了SpringMVC? 什么是SpringMVC? 简单使用 SpringMVC工作流程 设置bean加载控制 在服务器启动时加载SpringConfig 后台接受五种类型参数传递 REST风格 描述 RESTful入门 新建以下目录 实体类 控制器 统一异常处理 新建Code类用于记…

c#反序列化json

语句&#xff1a;JsonConvert.DeserializeObject(json); json字符串&#xff1a; [ { "id": "130000", "cityList": [ { "cityList": [ { …

Linux root用户忘记密码的恢复方法

日常运维工作中可能会遇到服务器忘记root密码的问题&#xff0c;本次以红帽8为例&#xff0c;讲解在忘记root密码后如何绕过密码登录然后重新设置密码的办法 目录 准备工作 问题复现 启动并进入引导 进入修复模式 修改用户密码文件 重置密码 准备工作 下载与系统匹配的…

Python编程 元组的创建

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.元组知识点 二.元组(tuple) 1.元组介绍(掌握) 2.元组创建(掌握) 3.…

第十四届蓝桥杯校模拟赛-编程大题详解+代码(二)

前言&#xff1a;这几天有不少小伙伴催促我尽快更新后五道编程题题解&#xff0c;然鄙人实在水平有限&#xff0c;实事求是&#xff0c;能力不足&#xff0c;不堪众望。思索良久&#xff0c;第九题有解题思路且已完成部分解题&#xff0c;但未完全完成&#xff0c;第十题尚未有…

python 数据挖掘与机器学习核心技术

近年来&#xff0c;Python编程语言受到越来越多科研人员的喜爱&#xff0c;在多个编程语言排行榜中持续夺冠。同时&#xff0c;伴随着深度学习的快速发展&#xff0c;人工智能技术在各个领域中的应用越来越广泛。机器学习是人工智能的基础&#xff0c;因此&#xff0c;掌握常用…

《FFmpeg Basics》中文版-11-格式之间转换

正文 ffmpeg工具的最常见用法是从一种音频或视频格式转换为另一种相关的格式。 格式参数在输出文件之前由-f选项设置&#xff0c;或者在输入文件之前也有原始输入&#xff0c;具体的可用格式信息在[显示帮助和功能]一章中列出来了。 多媒体格式介绍 文件格式 媒体格式是能够…

OpenSSH移植到Linux开发板

OpenSSH移植到Linux开发板 文章目录OpenSSH移植到Linux开发板前言一、移植zlib库二、 移植openssl库三、 移植openssh库1. 在开发板中创建目录2. 将文件拷贝到对应目录下3. 创建对应软连接4. 开发板上生成密钥文件5. 开启SSH前言 在Linux开发中&#xff0c;有时候需要远程登录…

BLE学习(2):广播包报文格式详解

文章目录1 广播通道2 广播包参考手册&#xff1a; BLUETOOTH SPECIFICATION Version 5.0为了能够充分理解蓝牙的广播&#xff0c;我们先了解一下BLE架构的GAP(Generic Access Profile)层。 GAP层提供决定蓝牙设备之间如何交互的框架&#xff0c;包括&#xff1a; 蓝牙设备的角…

PHP 底层的运行机制和工作原理

阅读目录阐述一、PHP的设计理念及特点PHP 为什么没有多线程&#xff1f;1、PHP 与多线程2、PHP是单线程&#xff0c;多进程模型3、 php为什么选择多进程&#xff0c;而不是多线程4、场景二、PHP 四层体系1、上层应用2、Sapi3、Extensions&#xff08;扩展&#xff09;4、Zend 引…