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     }
  • 相关阅读:
    java 菜单
    QT 让信号自由飞翔(骚操作)
    QT editLine 无法输入的问题
    易经初学体会
    Cgroup
    springboot pom 引用集合
    使用ab测试工具 进行并发测试
    intellij 设置-试验过的
    【iis错误码】IIS 服务 这些年遇到的错误码
    101个创业失败案例背后的20大原因
  • 原文地址:https://www.cnblogs.com/towerbird/p/11706661.html
Copyright © 2011-2022 走看看