zoukankan      html  css  js  c++  java
  • 029 Divide Two Integers 两数相除

    不使用乘号,除号和取模符号将两数相除。
    如果溢出返回 MAX_INT。
    详见:https://leetcode.com/problems/divide-two-integers/description/

    Java实现:

    位操作Bit Operation,思路是:如果被除数大于或等于除数,则进行如下循环,定义变量t等于除数,定义计数p,当t的两倍小于等于被除数时,进行如下循环,t扩大一倍,p扩大一倍,然后更新res和m。

    class Solution {
        public int divide(int dividend, int divisor) {
            int res=0;
            if(divisor==0){
                return Integer.MAX_VALUE;
            }
            if(dividend==Integer.MIN_VALUE&&divisor==-1){
                return Integer.MAX_VALUE;
            }
            long m=Math.abs((long)dividend);
            long n=Math.abs((long)divisor);
            while(m>=n){
                long t=n,p=1;
                while(m>=(t<<1)){
                    t<<=1;
                    p<<=1;
                }
                res+=p;
                m-=t;
            }
            if((dividend>0 && divisor>0)||(dividend<0 && divisor<0)){
                return res;
            }else{
                return -res;
            }
        }
    }
    

    参考:https://www.cnblogs.com/grandyang/p/4431949.html

  • 相关阅读:
    企业在线学习平台开发02
    企业在线学习平台开发01
    20200807-1
    20200801-01
    16用户体验评价-补
    13第一阶段意见评审-补
    11单词统计-补
    09用户模板和用户场景-补
    08顶会热词统计-补
    时间 Java
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8687570.html
Copyright © 2011-2022 走看看