當前位置 博文首頁 > 信息技術智庫:《畫解算法》2.整數反轉【python-簡單】

    信息技術智庫:《畫解算法》2.整數反轉【python-簡單】

    作者:[db:作者] 時間:2021-09-13 19:00

    🍅 作者主頁:不吃西紅柿

    🍅 簡介: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相關黑科技:爬蟲、算法、小工具?

    (優質好文持續更新中……)?

    cs
程序員cxuan的個人主頁:這篇 Java 基礎,我吹不動了 小小張自由―>張有博:軟件工程――編碼、測試、維護 小小張自由―>張有博:淺談面向對象方法學 小小張自由―>張有博:UML――概述(事物、關系、圖) 小小張自由―>張有博:UML――用例圖 小小張自由―>張有博:UML――活動圖和狀態圖 小小張自由―>張有博:UML――交互圖(順序圖與協作圖) 小小張自由―>張有博:UML――實現圖(構件圖與部署圖) 小小張自由―>張有博:C#編程基礎――C#與.NET的關系 小小張自由―>張有博:C#編程基礎――數據類型 小小張自由―>張有博:C#編程基礎――常量與變量 小小張自由―>張有博:C#編程基礎――運算符與表達式 小小張自由―>張有博:C#編程基礎――循環語句 小小張自由―>張有博:C#編程基礎――跳轉語句 小小張自由―>張有博:C#編程基礎――類 小小張自由―>張有博:C#編程基礎――方法 小小張自由―>張有博:初始三層架構(超超超詳細) 小小張自由―>張有博:C#連接數據庫之Connection、Command、D 小小張自由―>張有博:System.ArgumentOutOfRangeException: 小小張自由―>張有博:機房重構之單例模式的應用 小小張自由―>張有博:機房重構之備忘錄模式的應用 小小張自由―>張有博:機房重構之職責鏈模式的應用 小小張自由―>張有博:HTML基礎――標簽 小小張自由―>張有博:div+css的入門知識 小小張自由―>張有博:CSS核心內容:標準流、盒子模型、浮動 小小張自由―>張有博:asp.net生成驗證碼并提交驗證 小小張自由―>張有博:XML基礎 小小張自由―>張有博:各種計算機語言簡短簡介 小小張自由―>張有博:2020年10月自考總結 小小張自由―>張有博:vs2019利用gitee(碼云)協作開發 小小張自由―>張有博:1024程序員節 小小張自由―>張有博:IDEA2020.3詳細安裝教程 小小張自由―>張有博:JavaWeb之Request與Response詳解 小小張自由―>張有博:JavaWeb之Filter和Listener 小小張自由―>張有博:Vue插件報錯:Vue.js is detected on t 小小張自由―>張有博:在項目中使用Spring Cloud Alibaba Sen 小小張自由―>張有博:在項目中使用OpenFeign 小小張自由―>張有博:解決idea打開Vue項目報紅 小小張自由―>張有博:CentOS7詳細安裝教程--圖文介紹超詳細 zhtbs的博客:Springboot 入門培訓 5 Thymeleaf 與 MVC項目搭建 zhtbs的博客:(Framework7 移動webapp) Springboot 入門培訓 7 zhtbs的博客:HTML+CSS+JavaScript 迷宮生成算法 【建議收藏】 zhtbs的博客:(Framework7 移動webapp) Springboot 入門培訓 8 C zhtbs的博客:Springboot 入門培訓 9 Security(一) 登錄驗證 zhtbs的博客:Springboot 入門培訓 4 WEB+JSP MVC項目搭建 zhtbs的博客:Springboot 入門培訓 10 Security(二) 數據庫DB 貓耳山在天邊:《Linux命令行與shell腳本編程大全》(第三版)讀 英雄哪里出來:??13萬字《C語言動漫對話教程(入門篇)》??(建議收 qq1113673178的博客:[學習][筆記] qt5 從入門到入墳:<12>Grap qq1113673178的博客:[學習][筆記] qt5 從入門到入墳:<13>基于 .net平臺的rabbitmq使用封裝demo詳解 C++類的特種函數生成機制詳解 Python調用百度AI實現圖片上表格識別功能 node自定義安裝更改npm全局模塊默認安裝路徑的步驟 帶你用C語言實現strtok和字符串分割函數 靜態網頁和靜態網頁性能比較 網頁標題優化原則和描述優化原則 php 怎么設置cookie記住密碼 php設置時區無效怎么辦 php __autoload 失效怎么辦 有關PHP調試的小技巧,看看吧! 從0開始:教你微信小店怎么開! 成本5元竟然賣50元 微信朋友圈賣面膜真黑啊 HashMap原理及put方法與get方法的調用過程 基于IDEA 的遠程調試 Weblogic的操作過程 UTC時間、GMT時間、本地時間、Unix時間戳的具體使用 如何利用SwiftUI實現可縮放的圖片預覽器 網站怎么利用內容更新雙重境界快速提高網站權重? php顯示繁體亂碼怎么辦 php不能開啟php_curl怎么辦
A级免费视频