<LeetCode OJ> 7. Reverse Integer
2015-12-18 22:22
393 查看
题目翻译:
将数字逆置
Example1: x = 123, return 321
Example2: x = -123, return -321
分析:DONE
思路首选:要先知道数的正负,正数直接反,负数先变成正数再反(增加一个flag记录是否为负数)
正数具体反过程---------先一位一位的个位取出来(他是新数的最高位,循环一次*10),取了之后再将这个数缩小10倍(取整)重复如此操作,同时,题目需要溢出处理,因为反过来后可能越界。
空间复杂度为O(N),时间复杂度为O(1),N为位数
别人的简洁算法:
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50354544
原作者博客:http://blog.csdn.net/ebowtang
将数字逆置
Example1: x = 123, return 321
Example2: x = -123, return -321
分析:DONE
思路首选:要先知道数的正负,正数直接反,负数先变成正数再反(增加一个flag记录是否为负数)
正数具体反过程---------先一位一位的个位取出来(他是新数的最高位,循环一次*10),取了之后再将这个数缩小10倍(取整)重复如此操作,同时,题目需要溢出处理,因为反过来后可能越界。
空间复杂度为O(N),时间复杂度为O(1),N为位数
class Solution { public: int reverse(int x) { bool flag=true; if(x < 0) { flag=false; x*=-1; } long long result=0; while(x) { result=result*10+x%10; x/=10; } if(!flag) result*=-1; //溢出判断 return (result>INT_MAX || result<INT_MIN )?0:result; } };
别人的简洁算法:
class Solution { public: int reverse(int x) { long long res = 0; while(x) { res = res*10 + x%10; x /= 10; } return (res<INT_MIN || res>INT_MAX) ? 0 : res; } };
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50354544
原作者博客:http://blog.csdn.net/ebowtang
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- 用批处理解决数学问题的代码第1/4页
- C#数据结构之顺序表(SeqList)实例详解
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 数据结构之Treap详解
- 浅析STL中的常用算法