¡GoConqr estrena diseño! Cuéntanos qué te parece.

Fichas

Divide Two Integers

Suhas S Inglés 1 ficha

Fichas del conjunto (1)

  1. 1Divide Two Integerspublic int divide(int dividend, int divisor) {
    //Reduce the problem to positive long integer to make it easier.
    //Use long to avoid integer overflow cases.
    int sign = 1;
    if ((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0))
    sign = -1;
    long ldividend = Math.abs((long) dividend);
    long ldivisor = Math.abs((long) divisor);
    //Take care the edge cases.
    if (ldivisor == 0) return Integer.MAX_VALUE;
    if ((ldividend == 0) || (ldividend < ldivisor)) return 0;
    long lans = ldivide(ldividend, ldivisor);
    int ans;
    if (lans > Integer.MAX_VALUE){ //Handle overflow.
    ans = (sign == 1)? Integer.MAX_VALUE : Integer.MIN_VALUE;
    } else {
    ans = (int) (sign * lans);
    }
    return ans;
    }
    private long ldivide(long ldividend, long ldivisor) {
    // Recursion exit condition
    if (ldividend < ldivisor) return 0;
    // Find the largest multiple so that (divisor * multiple <= dividend),
    // whereas we are moving with stride 1, 2, 4, 8, 16...2^n for performance reason.
    // Think this as a binary search.
    long sum = ldivisor;
    long multiple = 1;
    while ((sum+sum) <= ldividend) {
    s

Información

Descripción
Fichas sobre Divide Two Integers, creado por Suhas S el 18/03/2018.
Creado por
Suhas S
Visitas
0
Valoración

Escríbenos

¿Sobre qué es tu mensaje?

¿Qué te parece el nuevo diseño?

¿Te gusta?