>[success] # 反轉整數
~~~
給定一個 32 位有符號整數,將整數中的數字進行反轉。
注意:
假設我們的環境只能存儲 32 位有符號整數,其數值范圍是 [?2^31, 2^31 ? 1]。根據這個假設,如果反轉后的整數溢出,
則返回 0。
~~~
* 示例
~~~
輸入: 123
輸出: 321
~~~
>[danger] ##### 解題PYTHON
* 思路
~~~
1.利用切片[start_index:end_index:step]
2.切片第一個值 是從哪里開始,第二個是在哪里結束,第三個是跳躍幾個,顧頭不顧腚
~~~
* 個人最開始想法
~~~
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x<0:
a = int("-"+str(x)[:0:-1])
print(a)
if a < (-2**31):
return 0
else:
return a
elif x>=0:
a = int(str(x)[::-1])
if a > (2**31-1) :
return 0
else:
return a
~~~
* 查詢后別人的方法
~~~
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
x = int( str(x)[::-1] if x>=0 else "-"+str(x)[:0:-1])
return 0 if x>2**31-1 or x<-2**31 else x
~~~
* 最快方法
~~~
1.bit_length() 一個數的二進制長度
2.一個數的二進制長度等于長度二的次冪加1
~~~
~~~
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
flag = 0
if x > 0:
flag = 1
else:
flag = -1
s = str(abs(x))[::-1]
n = int(s) * flag
return n if n.bit_length() < 32 else 0
~~~
>[danger] ##### 解題JAVASPRICT
~~~
1.Math.sign() -- Math.sign方法用來判斷一個數到底是正數、負數、還是零
2.字符串.abs(x).toString().split("").reverse().join("")
~~~
~~~
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let numberList = Math.sign(x)*Math.abs(x).toString().split("").reverse().join("")
return (numberList<Math.pow(-2,31)||numberList>Math.pow(2,31)-1)?0:numberList
};
~~~
- 接觸數據結構和算法
- 數據結構與算法 -- 大O復雜度表示法
- 數據結構與算法 -- 時間復雜度分析
- 最好、最壞、平均、均攤時間復雜度
- 基礎數據結構和算法
- 線性表和非線性表
- 結構 -- 數組
- JS -- 數組
- 結構 -- 棧
- JS -- 棧
- JS -- 棧有效圓括號
- JS -- 漢諾塔
- 結構 -- 隊列
- JS -- 隊列
- JS -- 雙端隊列
- JS -- 循環隊列
- 結構 -- 鏈表
- JS -- 鏈表
- JS -- 雙向鏈表
- JS -- 循環鏈表
- JS -- 有序鏈表
- 結構 -- JS 字典
- 結構 -- 散列表
- 結構 -- js 散列表
- 結構 -- js分離鏈表
- 結構 -- js開放尋址法
- 結構 -- 遞歸
- 結構 -- js遞歸經典問題
- 結構 -- 樹
- 結構 -- js 二搜索樹
- 結構 -- 紅黑樹
- 結構 -- 堆
- 結構 -- js 堆
- 結構 -- js 堆排序
- 結構 -- 排序
- js -- 冒泡排序
- js -- 選擇排序
- js -- 插入排序
- js -- 歸并排序
- js -- 快速排序
- js -- 計數排序
- js -- 桶排序
- js -- 基數排序
- 結構 -- 算法
- 搜索算法
- 二分搜索
- 內插搜索
- 隨機算法
- 簡單
- 第一題 兩數之和
- 第七題 反轉整數
- 第九題 回文數
- 第十三題 羅馬數字轉整數
- 常見一些需求
- 把原始 list 轉換成樹形結構