摘要:字符串法復(fù)雜度時(shí)間空間思路先將數(shù)字轉(zhuǎn)化為字符串,然后將字符串倒序輸出,并轉(zhuǎn)回?cái)?shù)字。模十法復(fù)雜度時(shí)間空間思路通過對(duì)數(shù)字模十取余得到它的最低位。除了檢查溢出返回特定值以外,有沒有別的方法處理溢出可以使用代碼塊排除異常。
Reverse Integer
Reverse digits of an integer.字符串法 復(fù)雜度Example1: x = 123, return 321
Example2: x = -123, return -321
時(shí)間 O(n) 空間 O(n)
思路先將數(shù)字轉(zhuǎn)化為字符串,然后將字符串倒序輸出,并轉(zhuǎn)回?cái)?shù)字。記得需要去除首部多余的0。
模十法 復(fù)雜度時(shí)間 O(n) 空間 O(1)
思路通過對(duì)數(shù)字模十取余得到它的最低位。其實(shí)本題考查的是整數(shù)相加的溢出處理,檢查溢出有這么幾種辦法:
兩個(gè)正數(shù)數(shù)相加得到負(fù)數(shù),或者兩個(gè)負(fù)數(shù)相加得到正數(shù),但某些編譯器溢出或優(yōu)化的方式不一樣
對(duì)于正數(shù),如果最大整數(shù)減去一個(gè)數(shù)小于另一個(gè)數(shù),或者對(duì)于負(fù)數(shù),最小整數(shù)減去一個(gè)數(shù)大于另一個(gè)數(shù),則溢出。這是用減法來避免加法的溢出。
使用long來保存可能溢出的結(jié)果,再與最大/最小整數(shù)相比較
代碼public class Solution { public int reverse(int x) { long result = 0; int tmp = Math.abs(x); while(tmp>0){ result *= 10; result += tmp % 10; if(result > Integer.MAX_VALUE){ return 0; } tmp /= 10; } return (int)(x>=0?result:-result); } }
2018/10
func reverse(x int) int { // The reserse of MinInt32 will overflow if x == math.MinInt32 { return 0 } sign := 1 // Handle negative numbers if x < 0 { x = -x sign = -1 } result := 0 for x > 0 { rem := x % 10 // When the result == MaxInt32/10, the reminder has to be smaller than 7 // so that result*10 + rem won"t overflow (MaxInt32 is 2147483647) if math.MaxInt32/10 < result || (math.MaxInt32/10 == result && rem > 7) { return 0 } result = result*10 + rem x = x / 10 } return result * sign }后續(xù) Follow Up
Q:拿到反轉(zhuǎn)整數(shù)題目后第一步是什么?
A:先問出題者尾部有0的數(shù)字反轉(zhuǎn)后應(yīng)該是什么形式,其次問清楚溢出時(shí)應(yīng)該返回什么。
Q:除了檢查溢出返回特定值以外,有沒有別的方法處理溢出?
A:可以使用try-catch代碼塊排除異常。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/64388.html
摘要:詳細(xì)介紹將其他值轉(zhuǎn)成數(shù)字值。此方法更改數(shù)組的長(zhǎng)度。詳細(xì)介紹解題思路首先,將傳入的數(shù)字轉(zhuǎn)換成字符串,并分割成數(shù)組。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Create by jsliang on 2019-05-19 09:42:39 Recently revised in 2019-05-19 16:08:24 Hello 小伙伴們,如果覺得本文還不錯(cuò),記得給個(gè) star , 小伙伴們...
摘要:題目反轉(zhuǎn)整數(shù)反轉(zhuǎn)后的整數(shù)如果不在范圍則返回簡(jiǎn)單解法耗時(shí)解法二獲取余數(shù),即從右邊第一位開始的數(shù)字保留整數(shù)部分解題思路跳出循環(huán),判斷是否在最大值和最小值之間知識(shí)點(diǎn)復(fù)習(xí)小于的最大整數(shù)返回四舍五入返回的整數(shù)部分,包含正負(fù)號(hào) 題目 Given a 32-bit signed integer, reverse digits of an integer. 反轉(zhuǎn)整數(shù)反轉(zhuǎn)后的整數(shù)如果不在[?2^31, ...
摘要:每日一題整數(shù)反轉(zhuǎn)鏈接整數(shù)反轉(zhuǎn)題目分析題目不是很難但是細(xì)節(jié)很多并且不允許存儲(chǔ)位整數(shù)需要考慮很多的東西在之后的代碼部分逐一分析代碼標(biāo)記一下正數(shù)還是負(fù)數(shù)負(fù)數(shù)的最小值反轉(zhuǎn)后超出了范圍提前范圍避免下面的報(bào)錯(cuò)依次取出最低 ...
摘要:反轉(zhuǎn)比較法復(fù)雜度時(shí)間空間思路回文數(shù)有一個(gè)特性,就是它反轉(zhuǎn)后值是一樣的。代碼逐位比較法復(fù)雜度時(shí)間空間思路反轉(zhuǎn)比較有可能會(huì)溢出,但我們遍歷每一位的時(shí)候其實(shí)并不用保存上一位的信息,只要和當(dāng)前對(duì)應(yīng)位相等就行了。首先,負(fù)數(shù)是否算回文。 Palindrome Number Determine whether an integer is a palindrome. Do this witho...
摘要:月下半旬攻略道題,目前已攻略題。目前簡(jiǎn)單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...
閱讀 1461·2021-09-24 10:26
閱讀 3752·2021-09-06 15:02
閱讀 713·2019-08-30 14:18
閱讀 639·2019-08-30 12:44
閱讀 3170·2019-08-30 10:48
閱讀 2008·2019-08-29 13:09
閱讀 2061·2019-08-29 11:30
閱讀 2372·2019-08-26 13:36