給定乙個 32 位有符號整數,將整數中的數字進行反轉。
示例 1
:輸入:
123輸出:
321示例 2
:輸入:
-123
輸出:-
321示例 3
:輸入:
120輸出:
21注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231
,231 − 1
]。根據這個假設,如果反轉後的整數溢位,則返回 0。
1.先判斷整數的符號並儲存下來
2.取整數的絕對值,方便之後的運算
3.通過取餘運算子%取得餘數,即當前整數的個位數
3.1 由於整數最高位不能為0,需要判斷新的整數是否不為0
4.將取到的餘數依次賦值給乙個新的數字
5.全部反轉後再加上正負號
5.1 判斷數字是否在範圍之內
class
solution
:def
reverse
(self, x)
:"""
:type x: int
:rtype: int
"""# 判斷 x 的正負
if x >=0:
flag =
1# x 為正
else
: flag =
0# x 為負
# 取x的絕對值
x =abs(x)
# 建立乙個標誌位 i ,保證反轉後的數最高為不為 0
i =0# 建立乙個整數,用於儲存和返回結果
res =
0# 判斷 x 是否為 0,判斷是否取到了最後乙個值
while x !=0:
# 取 x 的個位數 y
y = x %
10# 取 x/10 整數部分
x = x //
10# 判斷 y 是否是0(為了防止前n位是0,導致報錯)
if i ==0:
if y ==0:
continue
# 直接進入下乙個迴圈
else
: i =
1# 確定了最高位不為 0,以後不再判斷 y 是否為0,防止誤判
# 確定了最高位的數不為 0
res = res *
10+ y
# 判斷 res 是否是負數
if flag ==0:
# 通過flag,res 應該是負數,將 res 取反
res =
-res
# 返回 res
return res
只是在解1的基礎上加上了 res 取值範圍的判斷
class
solution
:def
reverse
(self, x)
:"""
:type x: int
:rtype: int
"""# 判斷 x 的正負
if x >=0:
flag =
1# x 為正
else
: flag =
0# x 為負
# 取x的絕對值
x =abs(x)
# 建立乙個標誌位 i ,保證反轉後的數最高為不為 0
i =0# 建立乙個整數,用於儲存和返回結果
res =
0# 判斷 x 是否為 0,判斷是否取到了最後乙個值
while x !=0:
# 取 x 的個位數 y
y = x %
10# 取 x/10 整數部分
x = x //
10# 判斷 y 是否是0(為了防止前n位是0,導致報錯)
if i ==0:
if y ==0:
continue
# 直接進入下乙個迴圈
else
: i =
1# 確定了最高位不為 0,以後不再判斷 y 是否為0,防止誤判
# 確定了最高位的數不為 0
res = res *
10+ y
# 判斷 res 是否是負數
if flag ==0:
# 通過flag,res 應該是負數,將 res 取反
res =
-res
# 判斷 res 是否在[−2**31, 2**31 − 1]中
if res >=(-
2**31)
and res <=(2
**31-1
):# 返回 res
return res
else
:# 返回0
return
0
class
solution
:def
reverse
(self, x)
:"""
:type x: int
:rtype: int
"""# 將x的絕對值轉換成字串,然後反轉,再轉回整數型別
reverse_num=
int(
str(
abs(x))[
::-1
])# 判斷二進位制的長度是否超過31
if reverse_num.bit_length(
)>31:
return
0else
:# 如果x>0,返回reverse_num,如果不是,返回-reverse_num
return reverse_num if x >
0else
-reverse_num
LeetCode演算法個人解答 189 旋轉陣列
給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1,2,3,4,5,6,7 和 k 3 輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2,3,...
LeetCode演算法題解答
leetcode演算法題解答 第四題 尋找兩個有序陣列的中位數 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。def findmedianso...
LeetCode演算法題目 7
題目描述 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位那麼就返回 0。解決方案 反轉整數的方法可以與反轉字串進行模擬。我們想重複 彈出 xx 的最後一位...