由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请问大牛们Leetcode Palindrome Number 这道题(思路很简单,就是程序写不对)
相关主题
leetcode 一道题 valid palindromeleetcode online judge Longest Palindromic Substring memory limit exceeded
leetcode里的Palindrome partition问题 Memory Limit Exceeded: Longest Palindromic Substring
FB Phone Interview Failed by a simple questionLeetcode-010: Regular Expression Match (DP Solution)
palindrome partioning II帮忙看道题:[leetcode] word break
Palindrome那题,OJ上通不过leetcode valid number
Palindrome那题,OJ上通不过leetcode是不是最近有点问题?
leetcode上的Longest Palindromic Substring难道不收brute forFacebook电话面试总结
Leetcode Timeoutpalindrome int这个recursive能再java上实现么?
相关话题的讨论汇总
话题: int话题: return话题: 10话题: num
进入JobHunting版参与讨论
1 (共1页)
a***e
发帖数: 413
1
我觉得思路很简单,就是程序写不对。
下午还特别犯困,看到别的答案很简洁,自己的程序怎么调都通不过。
很郁闷。请问这种情况下自己花很多时间一步一步debug把程序写对到底值不值,还是
干脆找个标准答案记下来算啦?多谢指点。准备面试备受打击,觉得花在PH.D上的时间
还不如来趁年轻刷题啊。
bool isPalindrome(int x) {
if (x<0) return false;
if (x/10<1) return true;

int t = 1;
while(x/t>1)
t=t*10;
int a=1, b=t/10;
int left, right;
while (a<=b)
{
left = x/b;
right= (x%(a*10))/a;

if (left!=right)
return false;
else
{
x = x-left*b;
a=a*10;
b=b/10;
}
}

return true;

}
e*******s
发帖数: 1979
2
当然要把程序调对 写程序很容易 debug才是最考验功力的
写好的程序用自己用例在脑子里面run一下

【在 a***e 的大作中提到】
: 我觉得思路很简单,就是程序写不对。
: 下午还特别犯困,看到别的答案很简洁,自己的程序怎么调都通不过。
: 很郁闷。请问这种情况下自己花很多时间一步一步debug把程序写对到底值不值,还是
: 干脆找个标准答案记下来算啦?多谢指点。准备面试备受打击,觉得花在PH.D上的时间
: 还不如来趁年轻刷题啊。
: bool isPalindrome(int x) {
: if (x<0) return false;
: if (x/10<1) return true;
:
: int t = 1;

f******s
发帖数: 659
3
//use recursion
boolean isPalindrome(int num){
if(num<0) return false;
if(num<10) return true;

int length = (int) Math.log10(num) +1; //how many digits?

//compare the 1st and last digit
if (num/((int) Math.pow(10, length-1))!=num%10)
return false;

//chop off the 1st and last digit
return isPalindrome (((int)(num%(Math.pow(10, length-1))))/10);
}
f******s
发帖数: 659
4
//use string
boolean isPalindrome(int num){
String numStr = String.valueOf(num);
String revStr = new StringBuilder(numStr).reverse().toString();
return numStr.equals (revStr);
}
s**x
发帖数: 7506
5
思路应该是对的,用的额外变量太多了,只用一个顶多两个应该就行了。

★ 发自iPhone App: ChineseWeb 8.7

【在 a***e 的大作中提到】
: 我觉得思路很简单,就是程序写不对。
: 下午还特别犯困,看到别的答案很简洁,自己的程序怎么调都通不过。
: 很郁闷。请问这种情况下自己花很多时间一步一步debug把程序写对到底值不值,还是
: 干脆找个标准答案记下来算啦?多谢指点。准备面试备受打击,觉得花在PH.D上的时间
: 还不如来趁年轻刷题啊。
: bool isPalindrome(int x) {
: if (x<0) return false;
: if (x/10<1) return true;
:
: int t = 1;

s**x
发帖数: 7506
6
Probably the most inefficient method.

★ 发自iPhone App: ChineseWeb 8.7

【在 f******s 的大作中提到】
: //use recursion
: boolean isPalindrome(int num){
: if(num<0) return false;
: if(num<10) return true;
:
: int length = (int) Math.log10(num) +1; //how many digits?
:
: //compare the 1st and last digit
: if (num/((int) Math.pow(10, length-1))!=num%10)
: return false;

s**x
发帖数: 7506
7
This one actually pretty smart.

★ 发自iPhone App: ChineseWeb 8.7

【在 f******s 的大作中提到】
: //use string
: boolean isPalindrome(int num){
: String numStr = String.valueOf(num);
: String revStr = new StringBuilder(numStr).reverse().toString();
: return numStr.equals (revStr);
: }

A*****i
发帖数: 3587
8
Are you kidding me ? 题目好像要求不能转成string,你做过这题没啊

【在 s**x 的大作中提到】
: This one actually pretty smart.
:
: ★ 发自iPhone App: ChineseWeb 8.7

f******s
发帖数: 659
9
//no recursion, no string manipulation
//space O(1), time O(n)
boolean isPalindrome(int num){
if(num<0) return false;
int rev = 0; //reverse num
int num0 = num; //original value
while (num>0){
rev = rev * 10 + num % 10; //get the rightmost digit of num
num /= 10;
}
return rev==num0;
}
a***e
发帖数: 413
10
啊,这个写得真好
相关主题
Palindrome那题,OJ上通不过leetcode online judge Longest Palindromic Substring memory limit exceeded
leetcode上的Longest Palindromic Substring难道不收brute for Memory Limit Exceeded: Longest Palindromic Substring
Leetcode TimeoutLeetcode-010: Regular Expression Match (DP Solution)
进入JobHunting版参与讨论
f******s
发帖数: 659
11
Thanks! It took 3 attempts, as you can see. :)

【在 a***e 的大作中提到】
: 啊,这个写得真好
a***e
发帖数: 413
12
会不会有overflow的问题呢?比如1000000003在32位机器上。
R*****i
发帖数: 2126
13
楼主的code,
while(x/t>1)
==》
while (x >= t) 或者 while (x > t)
但是显然这个算法很坏。
a***e
发帖数: 413
14
算法很坏?是说这个算法很差?下面这个是对的
bool isPalindrome(int x) {
if (x<0) return false;

int d=1;
while(x/d>=10)
{
d*=10;
}

while(x>0)
{
int q=x/d;
int r=x%10;

if (q!=r)
return false;
else
{
x=(x%d)/10;
d=d/100;
}
}

return true;

}
R*****i
发帖数: 2126
15

真他娘的见鬼了,我把
while(x/d>=10)
换成
while(d*10<=x)
被告知Time Limit Exceeded
是楼主人品好还是编译器优化了? 哪位大牛能解释一下?

【在 a***e 的大作中提到】
: 算法很坏?是说这个算法很差?下面这个是对的
: bool isPalindrome(int x) {
: if (x<0) return false;
:
: int d=1;
: while(x/d>=10)
: {
: d*=10;
: }
:

1 (共1页)
进入JobHunting版参与讨论
相关主题
palindrome int这个recursive能再java上实现么?Palindrome那题,OJ上通不过
怎么判断一个数的二进制是不是回文数Palindrome那题,OJ上通不过
回文数的问题leetcode上的Longest Palindromic Substring难道不收brute for
G四次电面面经Leetcode Timeout
leetcode 一道题 valid palindromeleetcode online judge Longest Palindromic Substring memory limit exceeded
leetcode里的Palindrome partition问题 Memory Limit Exceeded: Longest Palindromic Substring
FB Phone Interview Failed by a simple questionLeetcode-010: Regular Expression Match (DP Solution)
palindrome partioning II帮忙看道题:[leetcode] word break
相关话题的讨论汇总
话题: int话题: return话题: 10话题: num