当前位置: 首页 > news >正文

[LeeCode]-Divide Two Integers 不用乘除的除法运算

Divide Two Integers

 

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


方法:不断的减去被除数。要提高效率,就每次把除数翻倍。

注意:出现两个符号不一致的情况,如果变换符号,那么就要注意负最小值,变换符号溢出问题,需要用unsigned int。




class Solution {
public:
    int divide(int dividend, int divisor) {
        int ret=0;
        
        //异号问题
        bool sign=(dividend >0 && divisor<0) ||(dividend<0 && divisor>0);
        dividend=dividend>0 ? dividend : -dividend;
        divisor=divisor>0 ? divisor:-divisor;
            
        while(dividend>=divisor){
            int n=1;
            int divisor_n=divisor;
            while(dividend>=divisor_n){
                  dividend-=divisor_n;
                  ret+=n;
                  //翻倍
                   if(divisor_n<INT_MAX>>1){  //防止溢出
                     divisor_n+=divisor;
                     n+=n;
                   }
                }
            }
        return  sign?-ret:ret;
        }
};

相关文章:

  • 浏览器之父卷土重来 开发新浏览RockMelt
  • Singleton Pattern 单例模式
  • 浏览器也能当操作系统!——3款中文浏览器操作系统体验评测
  • Linux进程管理中的hash
  • 浏览器真的能“永不假死”?——六款主流浏览器防假死功能测试
  • [九度—剑指offer]—二维数组查找
  • 人人都能当“苍天哥” 手把手教你制作游戏视频
  • Linux 2.6 中导出sys_call_table表修改系统调用函数
  • [九度 1510 剑指offer]—替换空格 数组插入逆向移动
  • 个人设置随身携带口袋操作系统手到擒来
  • 免费邮箱,谁更可靠?6款常用免费邮箱收信效果对比测试
  • 哪个搜索引擎更聪明?微软必应搜索挑战赛
  • [九度1512 剑指offer7] 用两个栈实现队列
  • 无光驱没光盘 操作系统照样可以安
  • mmap() 实现文件复制
  • 【Leetcode】104. 二叉树的最大深度
  • CentOS 7 修改主机名
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • jQuery(一)
  • js数组之filter
  • PhantomJS 安装
  • React的组件模式
  • 观察者模式实现非直接耦合
  • 缓存与缓冲
  • 硬币翻转问题,区间操作
  • ​​​​​​​​​​​​​​Γ函数
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $$$$GB2312-80区位编码表$$$$
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (BFS)hdoj2377-Bus Pass
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (超详细)语音信号处理之特征提取
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (第27天)Oracle 数据泵转换分区表
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三)Honghu Cloud云架构一定时调度平台
  • (十六)Flask之蓝图
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ../depcomp: line 571: exec: g++: not found
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 设计一套高性能的弱事件机制
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET大文件上传知识整理
  • .NET命名规范和开发约定
  • .net与java建立WebService再互相调用
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @Transactional 竟也能解决分布式事务?
  • [ C++ ] STL---string类的使用指南