使用数组实现整数数字的反转(leetcode原题)
-
理解题意(Comprehend)
输入整数123返回一个整数321
- 逆序输出:按照相反的顺序输出
- 首尾交换:第一个和最后一个交换、第二个和倒数第二个交换,直到全部都交换完毕
-
选择解题方式(Choose )
- 逆序输出(暴力解法):把整数转成字符串,再转成数组。逆序输出
- 数据结构:字符数组
- 算法思维:遍历
- 首尾交换(优化解法):把整数转成字符串,再转成数组。逆序输出
- 数据结构:字符数组
- 算法思维:遍历
- 逆序输出(暴力解法):把整数转成字符串,再转成数组。逆序输出
-
编码(Code)
- 暴力解法:整数–>字符串–>字符数组–>逆序输出–>字符数组转整数再转整数
- 优化解法:整数–>字符串–>字符数组–>逆序输出–>字符数组转整数再转整数
- 边界问题:
- 数组索引越界
- 数值溢出边界:溢出则返回0
- 细节问题:
- 首位不为0
- 符号特殊处理
- 边界问题:
-
思考更优解(Consider)
- 剔除无效代码或优化空间消耗
- 寻找更好的算法思维
- 既然是整数,能否使用数学思维
数学思维:
-
对更优解编码(Code)
-
变形延伸(Change)
- 题目变形:对长整形数据反转
- 题目变形:对字符串进行反转