j********x 发帖数: 2330 | 1 上次bloomberg面试问到一个题,反转一个整数,如12345->54321
当时写了个这么个东西(面试官假设输入是正整数):
int reverse(int n) {
res = 0;
while(n != 0) {
res *= 10;
res += n % 10;
n = n / 10;
}
return res;
}
然后面试官问,如果n<0怎么办;我说判断一下,然后把n = -n,然后重复;
问题就在这里,他说不行,正确的做法是n = -1 * n;我不明白为什么是这样?
哪位高人解答一下,包子酬谢 |
g*********s 发帖数: 1782 | 2 then why not ask him?
【在 j********x 的大作中提到】 : 上次bloomberg面试问到一个题,反转一个整数,如12345->54321 : 当时写了个这么个东西(面试官假设输入是正整数): : int reverse(int n) { : res = 0; : while(n != 0) { : res *= 10; : res += n % 10; : n = n / 10; : } : return res;
|
f****4 发帖数: 1359 | 3 n为负数,你想把它整成整数
不用 n = -1 * n; 用啥?
或者你用 n = 0 - n; 也行
-n 编译都不通过
居然都不做防止溢出的?
正负数的溢出不等 |
i**********e 发帖数: 1145 | 4 The syntax
n = -n;
is valid in C and C++.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
【在 f****4 的大作中提到】 : n为负数,你想把它整成整数 : 不用 n = -1 * n; 用啥? : 或者你用 n = 0 - n; 也行 : -n 编译都不通过 : 居然都不做防止溢出的? : 正负数的溢出不等
|
j********x 发帖数: 2330 | 5 是啊,我百思不得其解
当然,上面有人说我为什么不问,我其实问了,人家说,你回去试试看好了。。。
至于其它问题,不在讨论之列
【在 i**********e 的大作中提到】 : The syntax : n = -n; : is valid in C and C++. : 一些常见面试题的答案与总结 - : http://www.ihas1337code.com
|
r*******y 发帖数: 1081 | 6 这个算法有没有可能用递归?
【在 j********x 的大作中提到】 : 上次bloomberg面试问到一个题,反转一个整数,如12345->54321 : 当时写了个这么个东西(面试官假设输入是正整数): : int reverse(int n) { : res = 0; : while(n != 0) { : res *= 10; : res += n % 10; : n = n / 10; : } : return res;
|
f****4 发帖数: 1359 | 7 好吧,我孤陋了 -_-
【在 i**********e 的大作中提到】 : The syntax : n = -n; : is valid in C and C++. : 一些常见面试题的答案与总结 - : http://www.ihas1337code.com
|
i****c 发帖数: 102 | 8 alao valid in Java
【在 i**********e 的大作中提到】 : The syntax : n = -n; : is valid in C and C++. : 一些常见面试题的答案与总结 - : http://www.ihas1337code.com
|