由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - M 家电面
相关主题
leetcode: Divide Two Integers 怎么做?Divide Two Integers
关于Divide a integer这道题,怎么做呀?
关于除法的问题问一道 ama的除法题
leetcode上的2个整数相除计算乘法和除法,不用乘法和除法符号,怎么scale
leecode上的divide two integers问题两个整数除法的问题太刁钻了吧
讨论一道面试题Divide Two Integers Answer 超时
divide two integers两整数相除问题
Divide Two Integers OJ和CCP150的做法问个简单的atoi的问题
相关话题的讨论汇总
话题: divisor话题: int话题: dividend话题: result话题: divide
进入JobHunting版参与讨论
1 (共1页)
a********r
发帖数: 218
1
要求实现:
divide(int a, int b)
菜鸟写了一行
return (double) a/b;
印度哥说不行
哪位达人能做一下这道题?
跪求!!!
y***n
发帖数: 1594
2
你就说只好中国除法,不会印度除法
j**********3
发帖数: 3211
3
哈哈哈哈lz太可爱了
l*****a
发帖数: 14598
4
好歹b==0要处理一下吧

【在 a********r 的大作中提到】
: 要求实现:
: divide(int a, int b)
: 菜鸟写了一行
: return (double) a/b;
: 印度哥说不行
: 哪位达人能做一下这道题?
: 跪求!!!

y***n
发帖数: 1594
5
不需要把,反正计算机会处理的。。
d*******y
发帖数: 31
6
java的话要先把a和b都cast成double才行。
w*******8
发帖数: 10
7
public class Solution {
public int divide(int dividend, int divisor) {
int a = Math.abs(dividend);
int b = Math.abs(divisor);
boolean neg = (dividend > 0 && divisor < 0) || (dividend < 0 &&
divisor > 0);
if (divisor == 0) {
return Integer.MAX_VALUE;
}
if (divisor == Integer.MIN_VALUE) {
return (dividend == Integer.MIN_VALUE) ? 1 : 0;
}
if (dividend == Integer.MIN_VALUE) {
if (neg) {
return -1 + divide(dividend + b, b);
}
else {
return 1 - divide(dividend + b, b);
}
}
int product = b, result = 0;
while (a >= b) {
int q = 1;
while (a - product >= product) {
q = q << 1;
product = product << 1;
}
a = a - product;
product = b;
result += q;
}
return (neg) ? -result : result;
}
}
y***n
发帖数: 1594
8
我觉得还是楼主写的好,如果没有任何附加条件的话。
a********r
发帖数: 218
9
这绝对是M家的真题
野蛮生长大牛,
可否请你解释一下你的算法?
大雨大牛,
我的肯定不对,印度哥说了。你能不能贡献一下你的代码?

【在 w*******8 的大作中提到】
: public class Solution {
: public int divide(int dividend, int divisor) {
: int a = Math.abs(dividend);
: int b = Math.abs(divisor);
: boolean neg = (dividend > 0 && divisor < 0) || (dividend < 0 &&
: divisor > 0);
: if (divisor == 0) {
: return Integer.MAX_VALUE;
: }
: if (divisor == Integer.MIN_VALUE) {

d*******y
发帖数: 31
10
我想唯一的差别是能不能用/这个operator。

【在 a********r 的大作中提到】
: 这绝对是M家的真题
: 野蛮生长大牛,
: 可否请你解释一下你的算法?
: 大雨大牛,
: 我的肯定不对,印度哥说了。你能不能贡献一下你的代码?

相关主题
讨论一道面试题Divide Two Integers
divide two integers这道题,怎么做呀?
Divide Two Integers OJ和CCP150的做法问一道 ama的除法题
进入JobHunting版参与讨论
s**********r
发帖数: 117
11
前几天版上说印度傻逼transfer过来都有16万。
w*******8
发帖数: 10
12
是小弱不是大牛
正刷题呢,看到是leetcode上原题就顺手把代码搬过来了
Divide Two Integers:
思路是:既然是int的除法,不用考虑小数部分(余数),就是整数(商),那就数
dividend 里有多少个divisor. 这样,如果商是n 需要O(n)计算,可以用下二分法,
divide&conquer 递归调用一下,就是lgN了
剩下的就是边界条件: 1)正负 2)极值
int 的范围是 -2,147,483,648 to 2,147,483,647
这里有个细节,当时看别人的代码觉得比较巧妙:
正负数的范围是不对称的
-2147483648 abs 一下还是自己本身,那就先count一次,再计算
之前看到很多方法是转成double 再强转回int,其实是没必要的
其他基本的int 计算也大多是这个思路 比如 int sqrt(int) int pow(int)

【在 a********r 的大作中提到】
: 这绝对是M家的真题
: 野蛮生长大牛,
: 可否请你解释一下你的算法?
: 大雨大牛,
: 我的肯定不对,印度哥说了。你能不能贡献一下你的代码?

m*******s
发帖数: 23
13
public int divide(int dividend, int divisor) {
if (divisor == 0) throw new IllegalArgumentException();

long a = Math.abs((long)dividend);
long b = Math.abs((long)divisor);
int result = 0;
while (a >= b) {
long c = b;
for (int i = 0; c <= a; i++) {
a -= c;
result += 1 << i;
c <<= 1;
}
}
return ((dividend^divisor) >> 31) == 0 ? result : 0 - result;
}
q*****l
发帖数: 124
14
LZ萌萌哒!
曾经有一个面试官让我写sort,我直接给了个Arrays.sort(A)
U***A
发帖数: 849
15
-2147483648 abs 一下还是自己本身,?
这个对吗?

【在 w*******8 的大作中提到】
: 是小弱不是大牛
: 正刷题呢,看到是leetcode上原题就顺手把代码搬过来了
: Divide Two Integers:
: 思路是:既然是int的除法,不用考虑小数部分(余数),就是整数(商),那就数
: dividend 里有多少个divisor. 这样,如果商是n 需要O(n)计算,可以用下二分法,
: divide&conquer 递归调用一下,就是lgN了
: 剩下的就是边界条件: 1)正负 2)极值
: int 的范围是 -2,147,483,648 to 2,147,483,647
: 这里有个细节,当时看别人的代码觉得比较巧妙:
: 正负数的范围是不对称的

m**r
发帖数: 574
16
哈哈哈 萌萌哒+1
t*******e
发帖数: 1760
17
对的,因为溢出了

【在 U***A 的大作中提到】
: -2147483648 abs 一下还是自己本身,?
: 这个对吗?

s********k
发帖数: 2352
18
你这个 divide(1, 2) 的话, 结果是0.0

【在 a********r 的大作中提到】
: 要求实现:
: divide(int a, int b)
: 菜鸟写了一行
: return (double) a/b;
: 印度哥说不行
: 哪位达人能做一下这道题?
: 跪求!!!

f*****g
发帖数: 887
19
刚试了,楼上计算结果0.5
r*******e
发帖数: 971
20
位运算很不错。
然后前面的边界条件也都考虑到了。
只是Math.abs()没问题么???面试的时候是允许导入java.math.*么?
f******n
发帖数: 279
21
mark
q*******z
发帖数: 62
22
楼主好萌
1 (共1页)
进入JobHunting版参与讨论
相关主题
问个简单的atoi的问题leecode上的divide two integers问题
largest bst 解法不理解的地方讨论一道面试题
问一道 Interviewstreet 上的题 (JAVA)divide two integers
输入一个整数,返回它二进制 的1的个数Divide Two Integers OJ和CCP150的做法
leetcode: Divide Two Integers 怎么做?Divide Two Integers
关于Divide a integer这道题,怎么做呀?
关于除法的问题问一道 ama的除法题
leetcode上的2个整数相除计算乘法和除法,不用乘法和除法符号,怎么scale
相关话题的讨论汇总
话题: divisor话题: int话题: dividend话题: result话题: divide