zoukankan      html  css  js  c++  java
  • 【leetcode】Divide Two Integers

    题意:不用乘除取余操作求除法

    思路:

    1、如果循环一个个把因子从被除数中减去,那么如果是INT_MAX或者INT_MIN除以1的情况,执行时间会很长

    2、改善时间效率的方法采用将因子divisor不断乘以2(可以通过移位实现,同时结果ret也从1不断移位加倍),然后和被除数比较,等到大于等于被除数一半时,就从被除数中减去,将因子个数叠加入结果中,然后在剩下的被除数中采用同样的方法减去小于其一般的因子和,利用递归循环

    代码:

    package leetcode.doit;

       

    public class DivideTwoIntegers_my {

       

    /**

    * @param args

    */

    public static void main(String[] args) {

    int ret = divide(2, 3);

    System.out.println(ret);

    int dividend = 20;

    int divisor = 3;

    int result = 1;

    while (divisor < dividend) {

    divisor <<= 1;

    result <<= 1;

    }

    if (divisor != dividend) {

    divisor >>= 1;

    result >>= 1;

    }

    dividend -= divisor;

    // System.out.println(divisor);

    }

       

    static int divide(int dividend, int divisor) {

    int divisor_org=divisor;

    if (dividend < divisor) {

    dividend = 0; // Update dividend.

    return 0;

    }

       

    int result = 1;

       

    while (divisor < dividend) {

    divisor <<= 1;

    result <<= 1;

    }

       

    if (divisor != dividend) {

    divisor >>= 1;

    result >>= 1;

    }

       

    dividend -= divisor;

    result =result + divide(dividend,divisor_org);

    //System.out.println(result);

    return result;

    }

    }

       

       

  • 相关阅读:
    firewalld添加/删除服务service,端口port
    centos7下配置ftp服务器
    CentOS安装vsftpd FTP后修改默认21端口方法
    虚拟机,安装tools时出现“安装程序无法继续解决
    Linux下mysql数据库备份
    测试linux下磁盘的读写速率
    redis状态详解
    office2010安装不了提示已经安装32位的了怎么办
    nginx安装部署
    结构体赋值
  • 原文地址:https://www.cnblogs.com/keedor/p/4378038.html
Copyright © 2011-2022 走看看