《画解算法》2.整数反转【python-简单】

🍅 作者主页:不吃西红柿

🍅 简介:CSDN博客专家🏆、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。

🍅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  

给你一个 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

首先我们想一下,怎么去反转一个整数?
用栈?
或者把整数变成字符串,再去反转这个字符串?
这两种方式是可以,但并不好。实际上我们只要能拿到这个整数的 末尾数字 就可以了。
以12345为例,先拿到5,再拿到4,之后是3,2,1,我们按这样的顺序就可以反向拼接处一个数字了,也就能达到 反转 的效果。
怎么拿末尾数字呢?好办,用取模运算就可以了

1.jpg

1、将12345 % 10 得到5,之后将12345 / 10
2、将1234 % 10 得到4,再将1234 / 10
3、将123 % 10 得到3,再将123 / 10
4、将12 % 10 得到2,再将12 / 10
5、将1 % 10 得到1,再将1 / 10

这么看起来,一个循环就搞定了,循环的判断条件是x>0
但这样不对,因为忽略了 负数
循环的判断条件应该是while(x!=0),无论正数还是负数,按照上面不断的/10这样的操作,最后都会变成0,所以判断终止条件就是!=0
有了取模和除法操作,对于像12300这样的数字,也可以完美的解决掉了。

看起来这道题就这么解决了,但请注意,题目上还有这么一句

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31,  2^31 − 1]。

也就是说我们不能用long存储最终结果,而且有些数字可能是合法范围内的数字,但是反转过来就超过范围了。
假设有1147483649这个数字,它是小于最大的32位整数2147483647的,但是将这个数字反转过来后就变成了9463847411,这就比最大的32位整数还要大了,这样的数字是没法存到int里面的,所以肯定要返回0(溢出了)。
甚至,我们还需要提前判断

2.jpg

 上图中,绿色的是最大32位整数
第二排数字中,橘子的是5,它是大于上面同位置的4,这就意味着5后跟任何数字,都会比最大32为整数都大。
所以,我们到【最大数的1/10】时,就要开始判断了
如果某个数字大于 214748364那后面就不用再判断了,肯定溢出了。
如果某个数字等于 214748364呢,这对应到上图中第三、第四、第五排的数字,需要要跟最大数的末尾数字比较,如果这个数字比7还大,说明溢出了。

对于负数也是一样的

3.jpg

上图中绿色部分是最小的32位整数,同样是在【最小数的 1/10】时开始判断
如果某个数字小于 -214748364说明溢出了
如果某个数字等于 -214748364,还需要跟最小数的末尾比较,即看它是否小于8。

热门专栏推荐:

🥇 大数据集锦专栏:大数据-硬核学习资料 & 面试真题集锦 
🥈 数据仓库专栏:数仓发展史、建设方法论、实战经验、面试真题 
🥉 Python专栏:Python相关黑科技:爬虫、算法、小工具 

(优质好文持续更新中……)✍

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

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

相关文章

360:中国为什么没有自主研发的浏览器内核?

来源:360公司物联网智库 整理发布摘要:近日360公司发表题为《中国为什么没有自主研发的浏览器内核?》的文章,文章中写道:从0到1,从无到有,这是很多人理解的自主研发,按这个标准&…

用 WebClient 轻松实现文件下载上传、网页抓取

我们知道用 WebRequest(HttpWebRequest、FtpWebRequest) 和 WebResponse(HttpWebResponse、FtpWebResponse)可以实现文件下载上传、网页抓取,可是用 WebClient 更轻松。用 DownloadFile 下载网页using (System.Net.Web…

❤️ 炒 股 实 战丨原 地 起 飞 ❤️

郑重声明: 1、个人版可以免费获取交易数据进行分析,企业级大规模调用数据需要购买积分(大家玩玩即可) 2、为避免广告代言,本文将不会出现任何logo、链接和包,需要玩的主页私聊我! &#x1f345…

人工智能研究的新前线:生成式对抗网络

林懿伦, 戴星原, 李力, 王晓, 王飞跃来源:科学网 摘要:生成式对抗网络(Generative adversarial networks, GAN)是当前人工智能学界最为重要的研究热点之一。其突出的生成能力不仅可用于生成各类图像和自然语言数据,还启…

WP7开发小技巧之快捷键

开发 Windows Phone 7 应用程式,开启用键盘输入的密技 1. 启用键盘输入 在模拟器里调试程序时,默认情况下是不能用电脑的键盘输入,但是调试如果能用PC键盘肯定能提高不少速度。其实微软已经为我们程序员做了这方面的工作,可以按如…

1.MySQL数据库的介绍

1.MySQL数据库的介绍 什么是数据库 数据库(Database)就是按照数据结构来组织,存储和管理数据的仓库 专业的数据库是专门对数据进行创建,访问,管理,搜索等操作的软件,比起我们自己用文件读写的方式对象数据进行管理更…

中国自动化学会平行智能专业委员会成立

摘要:2018年8月18日上午,中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。2018年8月18日上午,中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。中国科学院院士吴宏鑫教…

蚂蚁的天堂

当今各个社区都轰轰烈烈的展开灭蚁运动时,我却任由蚂蚁在窗台的花盆里做窝,看着它们辛勤的在高大植物的根茎上劳作,时不时的还帮我灭掉了植物上害虫的幼卵,我就很高兴有这么一群邻居,时不时的还送写肉碎过来&#xff0…

2008-2018,5个版本互联网大脑模型的演进与对比

2018年8月,我们绘制的第五个版本的互联网大脑模型图,新的版本相当于为互联网找到了左右大脑的机制-机器智能左大脑和群体智能右大脑。第五版的绘制距离2008年第一个版本正好10年。互联网大脑模型主要是针对1969年以来互联网的网状模型,在21世…

2.安装MySQL

2.安装MySQL Mac系统中安装MySQL 使⽤用Mac中的Homebrew进⾏行行mysql的安装 1.下载安装mysql brew install mysql5.7 如果看到以下界⾯面则表示已经下载安装成功 2.启动mysql mysql.server start 3.关闭mysql mysql.server stop 4.登录mysql mysql -u root -p Windows安…

正则判断字符串是否为数字

var re /^(-?\d)(\.\d)?$/; //判断字符串是否为数字 var re/^[A-Za-z0-9]$/; //字母和数字组合转载于:https://www.cnblogs.com/peterdys/archive/2012/10/19/2731502.html

3.认识和操作一下mysql的基本命令

3.认识和操作一下mysql的基本命令 登录mysql,在终端输入以下命令,进行登录 mysql -u root -pMacBook-Pro:~ yc$ mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.7.28…

CNNIC互联网报告:中国网民超8亿 前沿科技进展显著

来源:新浪摘要:8月20日下午消息,中国互联网络信息中心(CNNIC)在京发布第42次《中国互联网络发展状况统计报告》。根据报告,截至2018年6月30日,我国网民规模达8.02亿,普及率为57.7%;手机网民规模达7.88亿&am…

以前看过一个压缩过的.exe,运行会播放长达半小时的动画,却只有60KB,个人认为其中的原理...

以前看过一个压缩过的.exe,运行会播放长达半小时的动画,而不重复,文件大小却只有60KB,个人认为其中的原理 1.主原理:该动画必是根据规则(即公式)生成的 2.启动时,根据公式&#xff0…

4.MySQL基础操作

4.MySQL基础操作 使用方法: 方式一: 通过在命令行敲命令来操作 ( 有助于命令的掌握)方式二: 通过图型界面工具,如 Navicat 等(在熟练掌握后再使用)方式三:通过编程语言(python,php,java,go...)执行mysql命令 SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个…

OE模块常用表结构

so_headers_all;so_lines_all; 表名:ONT.OE_order_headers_all 说明:订单头 HEADER_ID NUMBER 订单头标识码 ORG_ID NUMBER OU ID ORDER_TYPE_ID NUMBER 订单类型ID ORDER_NUMBER NUMBER 订单编号 ORDERED_DATE DATE 定购日期 REQUEST_DATE DATE 客户要求…

19个人工智能(AI)热门应用领域,你知道多少?

来源:网络大数据摘要:自然语言生成是人工智能的分支,研究如何将数据转化为文本,用于客户服务、报告生成以及市场概述。01自然语言生成(Natural Language Generation)自然语言生成是人工智能的分支,研究如何将数据转化为…

滴滴重磅发布:KDD2018大会187页人工智能+交通教程

来源:专知摘要:随着深度学习技术的提升,智能交通领域吸引了越来越多研究人员的关注,今天为大家带来滴滴在KDD大会上的最新教程,为大家呈现智能交通领域的最新进展。摘要随着网上约车与自动驾驶技术的快速发展&#xff…

5.一文搞懂MySQL的数据类型

🍅 作者主页:不吃西红柿 🍅 简介:CSDN博客专家🏆、信息技术智库公号作者✌简历模板、PPT模板、技术资料尽管【关注】私聊我。 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 历史文章目录&#…

用busybox制作并配置根文件系统

http://blog.chinaunix.net/uid-26758020-id-3208951.html一、根文件系统和busybox1) 在~目录下,创建一个rootfs目录,将其制作为nfs,目录结构如下(写一个脚本script.sh):mkdir bin d…