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

    一开始直接用循环减法,会超时,网上看了下,就是除数倍增的方法,这样复杂度由n变成lg n。中间还要注意负数溢出的情况,直接用long了。

    public class Solution {
        public int divide(int dividend, int divisor) {
            // Start typing your Java solution below
            // DO NOT write main() function       
            int ans = 0;
            boolean sign = true;
            
            if ((dividend >0 && divisor <0)
                || (dividend < 0 && divisor >0 )) sign = false;
                
            long a = dividend;
            long b = divisor;
            if (a < 0) a = -a;
            if (b < 0) b = - b;
            
            
            while (a >= b)
            {
                int multi = 1;
                long tmp = b;
                while (a >= tmp) {
                    a -= tmp;
                    ans += multi;
                    tmp += tmp;
                    multi += multi;
                }
            }
            if (!sign) return -ans;
            else return ans;
        }
    }
    

      

  • 相关阅读:
    hibernate一对多查询
    hibernate关联关系查询
    Cookie&&session
    JSP&&EL&&JSTL
    servlet下的request&&response
    servlet
    mysql命令
    html小结
    RabbitMQ初步学习和使用
    爬虫简单案例
  • 原文地址:https://www.cnblogs.com/lautsie/p/3229125.html
Copyright © 2011-2022 走看看