
小編溫馨提示,今天是我們堅持的第7天! 今天休息日,降低了些難度.讓大家輕松的放假也能學習哦
一.題目給定一個 32 位有符號整數,將整數中的數字進行反轉。 輸入: 123 輸出: 321
輸入: 120 輸出: 21
輸入: -123 輸出: -321
假設我們的環(huán)境只能存儲 32 位有符號整數,其數值范圍是 [?2^31, 2^31 ? 1]。根據這個假設,如果反轉后的整數溢出,則返回 0。 二.解決方案1.方法:彈出和推入數字 & 溢出前進行檢查 2.思路: 我們可以一次構建反轉整數的一位數字。在這樣做的時候,我們可以預先檢查向原整數附加另一位數字是否會導致溢出。 3.算法 反轉整數可以和反轉字符串一起類比實現. 在沒有輔助的堆棧/數組的幫助下,'彈出'和'推入'數字,可以嘗試有用數學的方式. 但是,當因為當 temp = rev*10+pop時,有可能會造成溢出. 4.解決溢出 假設rev ,為正數 如果temp = rev*10+pop ,導致溢出.那么一定rev >= INTMAX/10 ; 如果rev > INTMAX / 10 ;那么temp = rev*10+pop 一定會溢出 如果rev == INTMAX / 10 ,那么只要pop > 7 ,temp = rev*10+pop 就會溢出
三.代碼實現 C++ Code 
四.復雜度 時間復雜度:O(log(x)) 空間復雜度:O(1)
小編OS:如有疑問,留言即可.胖C會利用空余時間給大家做一個簡單解答的. 持續(xù)更新關注公眾號!
|