思路是不断将被除数分为两部分,每次分的一部分都是尽量大的除数的倍数,然后最后的商就是倍数加上剩下的部分再分,知道不够大。

递归实现

剩下的难点就是,正负号(判断商正负后将两个数都取绝对值),数太大(将数转成long类型),特殊情况(0除数和商太大)

public int divide(int dividend, int divisor) {
//判断结果的正负
int flag = (dividend<0 != divisor<0)?-1:1;
long lend = Math.abs((long)dividend);
long lor = Math.abs((long)divisor);
//特殊情况
if (divisor==0) return Integer.MAX_VALUE;
long res =ld(lend,lor);
if (res>Integer.MAX_VALUE)
return (flag>0)?Integer.MAX_VALUE:Integer.MIN_VALUE;
else return (int)res*flag;
}
public long ld(long lend,long lor)
{
if (lend<lor) return 0;
long sum = lor;
long m = 1;
//尝试将被除数分成两部分,其中一部分是小于被除数的m倍除数,需要不断尝试
while (sum*2<lend)
{
sum+=sum;
m+=m;
}
//将剩下的部分再分
return m+ld(lend-sum,lor);
}

[leetcode]29. Divide Two Integers不用除法实现除法的更多相关文章

  1. [LeetCode] 29. Divide Two Integers 两数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  2. [leetcode]29. Divide Two Integers两整数相除

      Given two integers dividend and divisor, divide two integers without using multiplication, divisio ...

  3. [LeetCode] 29. Divide Two Integers(不使用乘除取模,求两数相除) ☆☆☆

    转载:https://blog.csdn.net/Lynn_Baby/article/details/80624180 Given two integers dividend and divisor, ...

  4. [LeetCode] 29. Divide Two Integers ☆☆

    Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...

  5. [LeetCode]29. Divide Two Integers两数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  6. Java [leetcode 29]Divide Two Integers

    题目描述: Divide two integers without using multiplication, division and mod operator. If it is overflow ...

  7. [leetcode]29. Divide Two Integers 两整数相除

    Given two integers dividend and divisor, divide two integers without using multiplication, division ...

  8. LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)

    题目链接: https://leetcode.com/problems/divide-two-integers/?tab=Description   Problem :不使用乘法,除法,求模计算两个数 ...

  9. LeetCode: 29. Divide Two Integers (Medium)

    1. 原题链接 https://leetcode.com/problems/divide-two-integers/description/ 2. 题目要求 给出被除数dividend和除数divis ...

随机推荐

  1. 将 python3 添加到环境变量(ubuntu)

    将 python3 添加到环境变量 echo alias python = python3 >> ~/.bashrc 更新环境变量 source ~/.bashrc

  2. CentOS 安装ElasticSearch-head插件

    1 下载ElasticSearch-head安装包 1.1 Git下载ElasticSearch-head #安装git,若机器环境已存在,不需要再次安装 yum install git #下载 gi ...

  3. Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?

    在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(-)+", "a1b2c3") 返回的匹配结果为"c3"没有理解,学 ...

  4. Hbase 2.2.2 简单API操作

    前言 小案例中有创建表.创建命名空间.插入数据.获取数据. 环境准备 maven依赖可根据自己的版本进行调整 <!-- hbase依赖--> <dependency> < ...

  5. 3、pytorch实现最基础的MLP网络

    %matplotlib inline import numpy as np import torch from torch import nn import matplotlib.pyplot as ...

  6. jupyterlab 增加新内核的方法ipykernel

    参考: https://blog.csdn.net/C_chuxin/article/details/82690830

  7. Mac下查看端口占用情况

    为什么 后端开发时,有时会碰到服务无法正常启动,端口被占用.这时需要查看端口占用情况. 是什么 需要用到一些Linux命令. 怎么做 查看占用端口51805的进程 lsof -n -P -i TCP ...

  8. Kubernetes Python Client 初体验之node操作

    今天讲一下k8s中对于各个实物节点node的操作. 首先是获取所有nodes信息: self.config.kube_config.load_kube_config(config_file=" ...

  9. Feign使用注意事项

    使用Feign时,为了不写重复代码,需要写feign公共接口方便调用,这时候需要注意以下问题,以发邮件为例 定义公共接口 /** * @author liuyalong * @date 2020/10 ...

  10. JavaScript:常用的一些数组遍历的方法

    常用的一些遍历数组的方法: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...