日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转载:力扣:整数翻转(难点:整数溢出)

發布時間:2025/3/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转载:力扣:整数翻转(难点:整数溢出) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(力扣)LeetCode刷題之整數反轉

陳鵬既存一息,多言無益。?關注他8 人贊同了該文章

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123 輸出: 321

示例 2:

輸入: -123 輸出: -321

示例 3:

輸入: 120 輸出: 21

注意:

假設我們的環境只能存儲得下 32 位的有符號整數,則其數值范圍為 [?2^31, 2^31 ? 1]。請根據這個假設,如果反轉后整數溢出那么就返回 0。

臥槽,又是簡單題,簡單個毛線啊,對于我這種菜雞來說,真的好難呀!!!

我的思路一開始就是笨辦法,把數字轉換成字符串,然后判斷是否是正數,負數,最后轉換以后看是否在[-2^31,2^31-1]范圍內,但是好像不行啊,用什么來接收轉換后的數字呢?環境只允許存儲32位的有符號數,不能使用long64位的來接收啊????

力扣(LeetCode)官方給出的解題方式如下:

我勒個去啊,這TM的就是一道數學題啊!!!

理下思路吧:

官方給出的思想是“彈出”和“推入”

首先是彈出:

/pop operation: //彈出 pop = x % 10; //取余運算,得到一個數字最后一位,得到數字符號和x的一致 x /= 10; //接上步得到最后一位數字,該數字不要最后一個數字了

例如:數字3456

pop = 3456 % 10= 6

x /=10 → x = 3456/10 = 345

推入:

//push operation://推入 temp = rev * 10 + pop; //rev一開始是0 rev = temp;

例如:接上面的

temp = 6

rev = 6

重復上面的“彈出”,“推入”操作,就可以完成數字的反轉

但是,問題也來了,防止溢出,所以肯定得有個條件的嘛,2^31-1的值為:2147483647,將近21億多,當作圓周率記一下吧,要是我有這么多錢就好了,-2^31的值為:-2147483648

如果:“彈出”和“推入”得到的rev的數值>int類型的最大值/10,就不可能成功了,肯定溢出,例如:rev = 214748365,他下一次“推入”的數字不管是多少肯定比2^31-1大,

或者rev的數值=int類型的最大值/10 ,那么“彈出”的數字>7,也不行

負數的同理

總結:學渣的我能理解也不容易吧,還好數學思維好,┭┮﹏┭┮,只能慢慢來了,其他的方法以后再補充吧,感覺做這種題好燒腦啊......

發布于 2019-02-25力扣(LeetCode)?贊同 8??3 條評論?分享?喜歡?收藏?贊同 8?分享

總結

以上是生活随笔為你收集整理的转载:力扣:整数翻转(难点:整数溢出)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。