zoukankan      html  css  js  c++  java
  • 29. Divide Two Integers

    Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.

    Return the quotient after dividing dividend by divisor.

    The integer division should truncate toward zero.

    Example 1:

    Input: dividend = 10, divisor = 3
    Output: 3

    Example 2:

    Input: dividend = 7, divisor = -3
    Output: -2

    Note:

    • Both dividend and divisor will be 32-bit signed integers.
    • The divisor will never be 0.
    • Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 231 − 1 when the division result overflows.

    AC code:

    class Solution {
    public:
        typedef long long ll;
        int divide(int dividend, int divisor) {
            if (dividend == INT_MIN && divisor == -1) return INT_MAX;
            int negative_nums = 0;
            ll num, ans;
            int res=0;
            if (dividend < 0) 
                negative_nums++;
            if (divisor < 0) 
                negative_nums++;
            ll l_dividend = abs((ll)dividend);
            ll l_divisor = abs((ll)divisor);
            while (l_dividend >= l_divisor) {
                num = l_divisor;
                ans = 1;
                while (1) {
                    num = num << 1;
                    if (l_dividend >= num) {
                        ans <<= 1;
                    } else 
                        break;
                }        
                num = num>>1;
                l_dividend -= num;
                res += ans;
            }
            if (negative_nums%2 == 0)
                return res;
            else 
                return -res;
        }
    };
    

    Runtime: 12 ms, faster than 98.72% of C++ online submissions for Divide Two Integers.

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    redis_ 5 集群
    redis_4 主从模式
    redis_3 持久化
    redis_2 数据类型
    linux_ubuntu 连接xftp
    redis_1 安装和简单使用
    Activiti 各个节点涉及的表
    oracle 数据库imp操作导入dmp文件时表空间问题
    ORA-27101: shared memory realm does not exist 错误的处理
    oralce清理user 和tablespace.
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9757498.html
Copyright © 2011-2022 走看看