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

    特殊值可先判断并返回 很重要

    本题是通过左移代替乘法产生不同的除数, 然后做减法得到解。

     1 public class Solution {
     2     public int divide(int dividend, int divisor) {
     3         // IMPORTANT: Please reset any member data you declared, as
     4         // the same Solution instance will be reused for each test case.
     5         if(dividend == 0)
     6             return 0;
     7         if(divisor == 1)
     8             return dividend;
     9         boolean negative = false;
    10         if(dividend < 0 && divisor > 0)
    11             negative = true;
    12         if(dividend > 0 && divisor < 0)
    13             negative = true;
    14         long[] mydivisor = new long[32];
    15         long ldivisor = (long)Math.abs((long)divisor);
    16         long ldividend = (long)Math.abs((long)dividend);
    17         int i = 0;
    18         while(i < 32)
    19         {
    20             if(ldividend >= ldivisor)
    21             {
    22                 mydivisor[i] = ldivisor;
    23                 ldivisor <<= 1;
    24             }
    25             else
    26             {
    27                 i--;
    28                 break;
    29             }
    30             i++;
    31         }
    32         
    33         int result = 0;
    34         while(i>=0)
    35         {
    36             if(ldividend - mydivisor[i] >= 0)
    37                 {
    38                     ldividend -= mydivisor[i];
    39                     result += (1<<i);
    40                 }
    41             else
    42                 {
    43                     i--;
    44                 }
    45         }
    46         if(negative)
    47             return ~result + 1;
    48         else
    49             return result;
    50     }
    51 }
  • 相关阅读:
    JSON
    在ubuntu上部署Django
    Django安装
    Python3 编程第一步
    Python3 字典
    nginx 服务器下载安装配置详解
    彻底删除Navicat注册表
    JS 对输入的姓名 手机号码 邮箱做校验
    mysql 启动报错
    网线没问题 没法上网
  • 原文地址:https://www.cnblogs.com/jasonC/p/3404861.html
Copyright © 2011-2022 走看看