leetcode(9) Palindrome Number
来源:互联网 发布:视频展示台软件 编辑:程序博客网 时间:2024/05/20 06:04
Problem
Determine whether an integer is a palindrome. Do this without extra space.
首先明确一个概念,“什么是不使用额外空间”,这是在leetcode上的一个回答:
“without extra space” usually means with
O(1) space. so if you use a temp variable you’e still usingO(1) space and it is fine. But you should be more specific about the problem you’re talking about.
stackoverflow上的一个关于
stackoverflow这里说时间复杂度是算法所用总空间,例如我们在冒泡排序中是空间复杂度是
总之,在这个问题中我们就按照空间复杂度为
hints
在这个问题中要注意几点:
- 如果把int转换为str的话那么空间复杂度肯定就超过了
O(1) - 如果翻转数字的话有可能会造成溢出
所以我的想法就是利用求模和取余不断地获取int的某几位然后比较,这里需要注意的一点就是不能用求模获取一个数字的后几位,例如100021中如果求模的话会丢失中间的0。
基于这个思路这就产生了两种解法:
- 同时利用求模和取余获取x中的某一位,例如获取x=100021的第四位数,return (x//1000)%10
- 使用str转化成字符串再获取,str(x)[2]
都不是太好的解法,学会避免其中的陷阱就行了,就不写出代码了。
Solution
public boolean isPalindrome(int x) { if (x<0 || (x!=0 && x%10==0)) return false; int rev = 0; while (x>rev){ rev = rev*10 + x%10; x = x/10; } return (x==rev || x==rev/10);}
这个算法的思路就是获取x的后一半数字的翻转,然后比较前一半和后一半。
时间复杂度:
空间复杂度:
阅读全文
0 0
- LeetCode(9)Palindrome Number
- LeetCode(9) - Palindrome Number
- LeetCode (9)Palindrome Number
- leetcode(9) Palindrome Number
- LeetCode 9 - Palindrome Number
- leetcode 9 Palindrome Number
- Leetcode【9】:Palindrome Number
- [leetcode 9] Palindrome Number
- [Leetcode] 9 - Palindrome Number
- LeetCode(9) Palindrome Number
- [leetcode 9] Palindrome Number
- LeetCode 9:《Palindrome Number》
- leetcode.9---------------Palindrome Number
- leetCode #9 Palindrome Number
- leetcode 9 Palindrome Number
- LeetCode 9: Palindrome Number
- leetcode-9 Palindrome Number
- LeetCode 9 Palindrome Number
- Greenplum 扩展 segment个数
- 机器学习基石 4.1 Learning is Impossible?
- pcbsch标识符顶部有横线的属性写法
- mysql的join操作
- eclipse中jrebel安装+破解+配置
- leetcode(9) Palindrome Number
- matlab之改变画图游标显示数据的精度和内容
- [ZJOI2007]时态同步
- Elasticsearch线程池配置
- 动态内存申请 new、delete、delete[]、delete()
- maven
- Android Studio项目目录结构介绍
- IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程
- solr学习手册