首页 > 代码库 > [Twitter] Divide Without / Or %

[Twitter] Divide Without / Or %

Question:

Implement Integer division without using / or %.


http://www.glassdoor.com/Interview/Implement-integer-division-without-using-or-Questions-about-running-time-Can-you-do-it-faster-QTN_250205.htm

// A binary question
// return a / b.
public int divide(int a, int b)
{
    if (b == 0)
        return Integer.MAX_VALUE;
    if (a == 0)
        return 0;
    
    boolean neg = (a < 0 && b > 0) || (a > 0 && b < 0);
    a = Math.abs(a);
    b = Math.abs(b);
    
    long low = 1L;
    long high = a;
    while (low < high)
    {
      long mid = low + ((high - low) >> 1);
      
      long r = mid * b;
      
      if (r == a)
          return neg ? -mid : mid;
      else if (r > a)
          high = mid - 1;
      else
          low = mid + 1;
    }
    
    return neg ? -low : low;
}


[Twitter] Divide Without / Or %