国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

leetcode第7題,Reverse Integer

2019-11-08 02:44:43
字體:
來源:轉載
供稿:網友

Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Note: The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows. 一開始題目有點沒看懂。不知道為什么會溢出。其實是因為,給你的是十進制,而二進制有符號32位能表示的位數是有限的。所以反轉后還是可能溢出的。

int reverse(int x) { long res = 0; while(x) { res = res*10 + x%10; x /= 10; } return (res<INT_MIN || res>INT_MAX) ? 0 : res;}一開始的答案如上所示,INT_MIN和INT_MAX(頭文件:limits.h)分別是-2147483648(-2^31)和2147483647(2^31-1),是int能表示的最小的和最大的數。這個答案被accept了,但是只beat了5%左右的人。后來看到了某大神的答案。int reverse(int x) {int ans = 0;while (x) { int temp = ans * 10 + x % 10; if (temp / 10 != ans) //如果不等的話說明temp已經溢出了 return 0; ans = temp; x /= 10;}return ans;}

這個能自動檢測是否溢出,而不是靠與INT_MAX和INT_MIN比較來檢測溢出,這個比較過程非常耗時。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保山市| 宁波市| 永年县| 怀安县| 云和县| 鄂尔多斯市| 焦作市| 德兴市| 望城县| 无为县| 宝清县| 房山区| 佛冈县| 泸州市| 林州市| 漾濞| 抚远县| 江北区| 柞水县| 色达县| 张家界市| 汉中市| 和林格尔县| 竹山县| 彰化县| 桂东县| 石河子市| 合阳县| 新化县| 蒙阴县| 定州市| 永昌县| 沙湾县| 桓台县| 温泉县| 会同县| 平泉县| 沭阳县| 莆田市| 罗山县| 金昌市|