Amazon | Phone | Quotient and remainder without using division operator
Anonymous User
848

I had 2 question. One queston was like Dungeon Game.
Second one I had few mintues left. Interviewer asked me :
You will be given dividend and Divisor .. return back quotient and remainder without using division operator.
For example :
dividend : 25 Divisor : 4
Q :6 R: 1

SInce I had 5 mins left in hand .. so had to do with brute force :

Approach 1: 
 public int[] solve (int dividend, int divisor) {
        int q = 0;
        int sign = 1;
        if (dividend < 0) {
            sign *= -1;
            dividend *= -1;
        }
        if (divisor < 0) {
            sign *= -1;
            divisor *= -1;
        }
        while (dividend > divisor) {
            dividend -= divisor;
            q++;
        }
        return new int[]{q * sign, dividend};
    }

Approach 2 : 
    public static int[] solve2(int dividend, int divisor) {
        int q = 0;
        int sign = 1;
        if (dividend < 0) {
            sign *= -1;
            dividend *= -1;
        }
        if (divisor < 0) {
            sign *= -1;
            divisor *= -1;
        }
        while (divisor*divisor < dividend) {
            dividend -= divisor * divisor;
            q += divisor;
        }
        while (dividend > divisor) {
            dividend -= divisor;
            q++;
        }
        return new int[]{q * sign, dividend};
    }

Later after interview I was eating my head ... can I do anything better?

Comments (2)