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 }
  • 相关阅读:
    Mybatis 接口绑定
    Spring AOP
    Spring 基础使用
    Java 类的生命周期
    Mybatis 测试延迟加载
    Mybatis
    eclipse 常用jar包总结
    Web 过滤器参数设置问题
    Web 单元测试
    zabbix监控-自定义监控与报警(二)
  • 原文地址:https://www.cnblogs.com/jasonC/p/3404861.html
Copyright © 2011-2022 走看看