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

LeetCode29.两数相除 JavaScript

给定两个整数,被除数 dividend和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。

返回被除数 dividend 除以除数 divisor 得到的商。

示例 1:

输入: dividend = 10, divisor = 3
输出: 3

示例 2:

输入: dividend = 7, divisor = -3
输出: -2

说明:
被除数和除数均为 32 位有符号整数。
除数不为 0
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。本题中,如果除法结果溢出,则返回 2^31 − 1

答案参考:

/**
 * @param {number} dividend
 * @param {number} divisor
 * @return {number}
 */

var divide = function (dividend, divisor) {
    let result = 0, sign = 1, mul = 1;
    if ((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0)) {
        sign = -1;
    }
    dividend = Math.abs(dividend);
    divisor = Math.abs(divisor);
 
    divisor2 = divisor;
 
    while (dividend >= divisor2) {
        if (dividend > (divisor2 + divisor2)) {
            divisor2 += divisor2;
            mul += mul;
        }
        dividend -= divisor2;
        result += mul;
    }
    while (dividend >= divisor) {
        dividend -= divisor;
        result += 1;
    }
 
    if (sign == 1 && result > (Math.pow(2, 31) - 1)) {
        return Math.pow(2, 31) - 1;
    } else if (sign == -1 && result < -Math.pow(2, 31)) {
        return -Math.pow(2, 31);
    }
    if (sign == 1) {
        return result;
    } else {
        return -result;
    }
};

欢迎关注

相关文章:

  • vim命令模式下光标移动+查找
  • Fastjson的基本使用方法大全
  • 面孔相册按脸给照片分类 这是靠小米人脸检测技术实现的
  • 数据结构java版之冒泡排序及优化
  • 洛谷1474货币系统——小心重复的完全背包
  • 博弈论入门之斐波那契博弈
  • 工程优化暨babel升级小记
  • poj 3280【区间dp】
  • iOS 9以上系统 信任的企业级开发者证书
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • volatile
  • 自定义主题
  • python爬微信公众号前10篇历史文章(1)-思路概览
  • windows server 2008R2 域控迁移到 windows server 2012域控
  • 自学web前端课程大纲分享,适合所有人学习
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Electron入门介绍
  • Flannel解读
  • Markdown 语法简单说明
  • PHP面试之三:MySQL数据库
  • Promise面试题2实现异步串行执行
  • Python打包系统简单入门
  • python大佬养成计划----difflib模块
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端设计模式
  • 小程序开发中的那些坑
  • 延迟脚本的方式
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • FaaS 的简单实践
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #define 用法
  • #include到底该写在哪
  • $L^p$ 调和函数恒为零
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (145)光线追踪距离场柔和阴影
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C语言)球球大作战
  • (SpringBoot)第七章:SpringBoot日志文件
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (转)scrum常见工具列表
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .htaccess 强制https 单独排除某个目录
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET导入Excel数据
  • .net对接阿里云CSB服务
  • .NET下的多线程编程—1-线程机制概述