[leetcode]_Reverse Integer
经历了三道树的题后,完全崩溃中,急需一道非树图的题来挽救信心。
题目:反转数字。input : 123 , output : 321.
思路:直接,没什么好说的。
自己代码:很龊,有大量的冗余信息,还申请了一个List,虽然AC了,但有很大改进空间。
public int reverse(int x) {
boolean negative = false;
if(x < 0) {
negative = true;
x = x * (-1);
}
List<Integer> result = new ArrayList<Integer>();
while( x / 10 > 0 ){
result.add(x % 10);
x = x / 10;
}
result.add(x);
int num = 0;
int times = 1;
for(int i = result.size() - 1 ; i >= 0 ; i--){
num += result.get(i) * times;
times *= 10;
}
if(negative) return (-1)*num;
else return num;
}
在网络上看了别人的代码,下面是精简版:(非常清晰,没有什么冗余开销,只用了两个变量)
public int reverse(int x) {
boolean negative = false;
if(x < 0) {
negative = true;
x = x * (-1);
}
int temp = 0 ;
while(x > 0){
temp = temp * 10 + x % 10;
x = x / 10;
}
if(!negative) return temp;
else return (-1)*temp;
}
后面有个知识:负数%正数 等于负数。因此不用对负数单独进行符号判断,可以直接算。
最优版:
public int reverse(int x) {
int temp = 0 ;
while(x != 0){
temp = temp * 10 + x % 10;
x = x / 10;
}
return temp;
}
和第二个版本不同的地方在于while循环的条件由 x > 0 变为了 x != 0,这样负数也能适应该while。只使用了一个变量。五行代码。漂亮。
[leetcode]_Reverse Integer的更多相关文章
- LeetCode题目_Reverse Integer
最近在LeetCode上做题,写点东西记录一下,虽然自己做的都是些很水的题目,但是重在练手. 题号7:Reverse Integer,题目描述: Reverse digits of an intege ...
- [LeetCode] Reverse Integer 翻转整数
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 click to ...
- LeetCode 397. Integer Replacement
397. Integer Replacement QuestionEditorial Solution My Submissions Total Accepted: 5878 Total Subm ...
- leetcode@ [273] Integer to English Words (String & Math)
https://leetcode.com/problems/integer-to-english-words/ Convert a non-negative integer to its englis ...
- leetcode@ [343] Integer Break (Math & Dynamic Programming)
https://leetcode.com/problems/integer-break/ Given a positive integer n, break it into the sum of at ...
- [LeetCode][Python]Integer to Roman
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/integer ...
- C++ leetcode::Reverse Integer
第一天上课,数据库老师说对于计算机系的学生,凡是在课本上学到的专业知识都是过时的.深以为然,感觉大学两年半真的不知道学了什么,为未来感到担忧,C++也不敢说是精通,入门还差不多.最近丧的不行,不管怎么 ...
- [Leetcode] reverse integer 反转整数
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 click to ...
- leetcode 343. Integer Break(dp或数学推导)
Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...
随机推荐
- MySql中增加一列
如果想在一个已经建好的表中添加一列,可以用诸如: alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null; 这条语 ...
- jquery怎么实现跨域的访问呢?与别人提供的接口连接
下面这个例子你可以参考下 <script> $.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty ...
- substring与substr
一.substring package Test; public class SubstringTest { public static void main(String[] args) { Stri ...
- nyoj 79 导弹拦截
点击打开链接 拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发 ...
- [HackerCup Round1 2] Autocomplete (Trie)
题目链接:https://www.facebook.com/hackercup/problems.php?pid=313229895540583&round=344496159068801 题 ...
- Log4日志配置及使用
1.log4j.xml <?xml version="1.0" encoding="gb2312" ?> <!DOCTYPE log4j:co ...
- linux下启动dbca或netmgr类的图形界面报错解决
linux下启动dbca或netmgr类的图形界面报错解决 Xlib: connection to ":0.0" refused by server Xlib: No pro ...
- unity两点之间抛物线,完美金手指
学校享受的日子一去不复还了,呜呜.话说面试了几个公司,真心没准备好就上了,结果当然是小悲催.还好有容身之处,就算是搬砖,也有可能为自己盖楼,吼吼. 好,下面我来分享一道有意思的面试题,说他有意思,是因 ...
- 使用Cookie保存商品浏览记录
数据流程:页面上是商品列表,点击<a href="productServlet">商品名</a> ==>跳转到自定义的servlet中进行处理,先得到 ...
- 重拾qt
最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文 ...