Divide two integers without using multiplication, division and mod operator.

思路:不能使用乘法除法以及取模运算来计算两个数相除。主要做法就是,将因子不断乘2(向左移位即可实现),同时结果从1不断移位加倍,等到除数大于被除数一半的时候,就从被除数中减去,将因子个数累加到结果中,再依次反复循环。跳出循环,不断递减的被除数与除数相等,则结果在加1.

class Solution {
public:int divide(int dividend, int divisor) {assert(divisor!=0);int result=0,count=0;bool isNeg=false;if((dividend>0&&divisor<0)||(dividend<0&&divisor>0))isNeg=true;unsigned int tDividend=abs(dividend);unsigned int tDivisor=abs(divisor);unsigned int tmp=0;while(tDividend>tDivisor){count=1;tmp=tDivisor;while(tDividend>(tmp<<=1)){count<<=1;}tDividend-=(tmp>>1);result+=count;}if(tDividend==tDivisor){result++;}return isNeg?(-result):result;}
};

转载于:https://www.cnblogs.com/awy-blog/p/3825446.html

Divide Two Integers相关推荐

  1. leetcode之Divide Two Integers

    题目:Divide Two Integers Divide two integers without using multiplication, division and mod operator. ...

  2. 29. Divide Two Integers

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

  3. Leetcode: Divide Two Integers

    Divide two integers without using multiplication, division and mod operator. Best method(跟discuss vo ...

  4. Leetcode c语言-Divide Two Integers

    Title: Divide two integers without using multiplication, division and mod operator. If it is overflo ...

  5. LeetCode 29. Divide Two Integers

    29. Divide Two Integers Divide two integers without using multiplication, division and mod operator. ...

  6. LeetCode Divide Two Integers(不使用乘、除,求模来计算商)

    题意:给出被除数,除数,求商(要求不能用乘,除,求模) 思路:用被除数减去除数,直到小于除数为止.在减的过程中能够做些优化.将除数连续左移直到大于被除数,在这个过程中可以计算是左移后的数是除数的多少倍 ...

  7. [leetcode]Divide Two Integers

    直接用除数去一个一个加,直到被除数被超过的话,会超时. 解决办法每次将被除数增加1倍,同时将count也增加一倍,如果超过了被除数,那么用被除数减去当前和再继续本操作. #include <io ...

  8. LeetCode刷题——29. Divide Two Integers(Part 1靠自己)

    当我第一次看到这个题目时候我我心想不就是两数相除嘛,这么简单的题目为什么要放到 Medium 中,事实证明我当时的想法Too young,Too simple,Too naive 以至于被打脸n次,可 ...

  9. lintcode 中等题:Divide Two Integers 两个数的除法

    题目 两个整数相除 将两个整数相除,要求不使用乘法.除法和 mod 运算符. 如果溢出,返回 2147483647 . 样例 给定被除数 = 100 ,除数 = 9,返回 11 解题  15%的通过率 ...

最新文章

  1. 你想过 Controller 这些方法里的参数是如何工作的吗?
  2. 生产上oracle扩展表空间,oracle基于裸设备(raw device)扩充表空间
  3. Slog59_项目上线之域名备案时两家或多家运营商之间的业务交叉经历
  4. android 简易涂鸦板,canvas实现的简易涂鸦板效果
  5. system合约源码分析
  6. python数字替换成中文replace_Python3字符串替换replace(),translate(),re.sub()
  7. SQL_create_table创建表
  8. php ip 短时间 重复,记录服务器端ip,记录这个ip第一次启动文件的时间,并且排除重复的ip...
  9. 360安卓_360手机助手下载
  10. 解决VS2003查询卡死的问题
  11. Linux gcc编译程序时,-I(大写 i )、-L (大写 L)、-I(小写 L )的作用与区别
  12. css函数之重复的径向渐变
  13. 微信小程序api视频课程-基础-wx.canIUse的使用
  14. javascript技巧搜集。
  15. 同一个电脑安装多个jdk版本
  16. 写技术文章的一点感悟
  17. java Lambda与stream
  18. 《给青年的十二封信》1-谈读书—朱光潜
  19. 恐怖啊,MD5已经被真实情况下破解了
  20. 迅为嵌入式Linux学习笔记5——进程间通信

热门文章

  1. GLSL着色器周记02
  2. Android 卡片翻转动画效果
  3. Python 或将成为法国高中的官方编程教学语言
  4. 利用JFreeChart生成简单柱状图(Java)
  5. 于ubuntu配置hadoop当问题
  6. 字符字节Base64编码
  7. 跨系统远程登录用Linux系统远程登录windows7
  8. centos 7 安装docker 并设置阿里云镜像仓库
  9. 《中国人工智能学会通讯》——11.72 结束语
  10. JSP2.0语法初步掌握(学习笔记)