zoukankan      html  css  js  c++  java
  • LeetCode 29. 两数相除 时间击败【100.00%】 内存击败【76.25%】

    不禁让我想起了计算机是怎样进行除法运算的,单独考虑溢出以及边界情况,单独考虑符号,其他过程和我们小学除法是一模一样的:左移除数(十进制就是扩大十倍,二进制扩大两倍),直到正好比被除数小,一边累加商(在我的代码里就是33行)一边减小被除数,直到被除数不能减小,右移除数,重复上述过程。

     1 public int divide(int dividend, int divisor) {
     2         if (dividend == Integer.MIN_VALUE && divisor == -1) return Integer.MAX_VALUE;
     3         if (dividend == Integer.MIN_VALUE && divisor == Integer.MIN_VALUE) return 1;
     4         if (divisor == Integer.MIN_VALUE) return 0;
     5         
     6         int ans = 0, neg = 0;
     7         if (dividend == Integer.MIN_VALUE) {
     8             if (divisor < 0) dividend -= divisor;
     9             else dividend += divisor;
    10             ans++;
    11             if (dividend >= 0) neg ^= 1;
    12         }
    13         if (dividend < 0) {
    14             neg ^= 1;
    15             dividend *= -1;
    16         }
    17         if (divisor < 0) {
    18             neg ^= 1;
    19             divisor *= -1;
    20         }
    21         if (dividend < divisor) return neg == 1 ? -ans : ans;
    22 
    23         int res = 1;
    24         while (divisor <= dividend / 10) {
    25             divisor *= 10;
    26             res *= 10;
    27             if (dividend == divisor && dividend == 0) return neg == 1 ? -ans : ans;
    28         }
    29 
    30         while (divisor != 0) {
    31             while (dividend >= divisor) {
    32                 dividend -= divisor;
    33                 ans += res;
    34             }
    35             while (dividend < divisor) {
    36                 divisor /= 10;
    37                 res /= 10;
    38             }
    39         }
    40         return neg == 1 ? -ans : ans;
    41     }
  • 相关阅读:
    ssh配置调试的必杀技
    关于lua垃圾回收是否会执行__gc函数呢?
    lua技巧分享之保护执行
    Java访问Hbase
    详解mmseg
    相关query挖掘
    玩转游戏搜索
    JVM系列-常用参数
    Java批处理ExecutorService/CompletionService
    Java动态编译
  • 原文地址:https://www.cnblogs.com/towerbird/p/11706661.html
Copyright © 2011-2022 走看看