>[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 转换成树形结构