zoukankan      html  css  js  c++  java
  • [LeetCode] Divide Two Integers

    Divide two integers without using multiplication, division and mod operator.

     1 class Solution {
     2 private:
     3     long long f[100];
     4 public:
     5     int bsearch(long long a[], int left, int right, long long key)
     6     {
     7         if (left > right)
     8             return -1;
     9             
    10         int mid = left + (right - left) / 2;
    11         if (a[mid] == key)
    12             return mid;
    13         else if (a[mid] < key)
    14         {
    15             int pos = bsearch(a, mid + 1, right, key);
    16             return pos == -1 ? mid : pos;
    17         }
    18         else
    19         {
    20             return bsearch(a, left, mid - 1, key);
    21         }
    22     }
    23     
    24     int divide(int dividend, int divisor) {
    25         // Start typing your C/C++ solution below
    26         // DO NOT write int main() function
    27         int sign = dividend < 0 ? -1 : 1;
    28         if (divisor < 0)
    29             sign *= -1;
    30         
    31         long long div = dividend;
    32         div = abs(div);
    33         long long divisorL = divisor;
    34         divisorL = abs(divisorL);
    35         f[0] = divisorL;
    36         int size = 1;
    37         while(true)
    38         {
    39             if (f[size-1] >= div)
    40                 break;
    41             f[size] = f[size-1] + f[size-1];
    42             size++;
    43         }
    44         
    45         int num = 0;
    46         long long sum = 0;
    47         while(div > 0)
    48         {
    49             int pos = bsearch(f, 0, size - 1, div);
    50             if (pos == -1)
    51                 break;
    52             div -= f[pos];
    53             num += (1 << pos);
    54         }
    55                 
    56         return num * sign;
    57     }
    58 };

     

  • 相关阅读:
    cookie会话技术
    Vue实现任务列表效果
    Vue实现选项卡效果
    数组API(2)
    数组常用API(1)
    sticky,粘性定位
    了解HTTP协议和TCP协议
    快速排序
    冒泡排序
    【译】x86程序员手册21-6.3.5为操作系统保留的指令
  • 原文地址:https://www.cnblogs.com/chkkch/p/2789800.html
Copyright © 2011-2022 走看看