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

LeetCode 29题:两数相除

题目

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

整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2 。

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

注意:假设我们的环境只能存储 32 位 有符号整数,其数值范围是 [−231,  231 − 1] 。本题中,如果商 严格大于 231 − 1 ,则返回 231 − 1 ;如果商 严格小于 -231 ,则返回 -231 。

示例 1:

输入: dividend = 10, divisor = 3
输出: 3
解释: 10/3 = 3.33333.. ,向零截断后得到 3 。

示例 2:

输入: dividend = 7, divisor = -3
输出: -2
解释: 7/-3 = -2.33333.. ,向零截断后得到 -2 。

提示:

  • -231 <= dividend, divisor <= 231 - 1
  • divisor != 0

思路 

这道题我是将除法转化为减法,如:

将被除数分为 n 个除数。

这样要求我们先对结果的正负进行判断,然后对除数与被除数取绝对值进行减法。

为了加快速度,令 d= 除数 b ,将 d 每次与被除数 a/2 比较后乘以2,再进行比较,用 c 代表此时的d = c * b

代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>int divide(int dividend, int divisor);int main()
{int a = 2147483647;int b = 1;int c = divide(a, b);printf("%d", c);
}int divide(int dividend, int divisor)
{int res = 0;int sign = 1;if ((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0))sign = -1;if (divisor == INT_MIN){if (dividend == INT_MIN)return 1;elsereturn 0;}if (dividend == INT_MIN){if (divisor == 1)return INT_MIN;else if (divisor == -1)return INT_MAX;res++;dividend = dividend + fabs(divisor);}int a = fabs(dividend);int b = fabs(divisor);while (a >= b){int c = 1;int d = b;while (a/2 >= d)// a/2 是为了防止 2*d >INT_MAX 同时 a >= 2*d,为后面做准备{d = 2 * d;c = 2 * c;}a = a - d;//c 指 d 代表 c 个 bres = res + c;}if (sign == -1)res = -res;return res;
}

http://www.lryc.cn/news/115643.html

相关文章:

  • Axure RP9中使用Echarts示例
  • 利用Jmeter做接口测试全流程分析
  • 超级浏览器与指纹浏览器:功能与特点的比较
  • 云端同步、高效无界:5款免费的跨平台思维导图软件推荐!
  • OpenAI允许网站阻止其网络爬虫;谷歌推出类似Grammarly的语法检查功能
  • SpringBoot操作Jedis
  • 实现静态资源访问的几种方法
  • chrome 下 autocomplete=off (禁止记住密码)不起作用解决方案
  • 设计模式-简单工厂模式(静态工厂模式)java实现
  • 如何共享笔记本电脑网络
  • Android 高级进阶知识整理
  • 一文详解 DolphinDB SQL 标准化
  • ATF(TF-A)安全通告汇总
  • vuejs 设计与实现 - 简单diff算法
  • 【前端|Javascript第3篇】探秘JavaScript的作用域与作用域链:小白也能轻松搞懂!
  • 【Spring AOP】结合日志面向切面编程 两种写法
  • C#在自动化领域的应用前景与潜力
  • string模拟实现:
  • 系统与软件安全研究(八)
  • jmeter测试rpc接口-使用dubbo框架调用【杭州多测师_王sir】
  • Java8中forEach()里使用return的效果
  • MVC配置原理
  • rabbitmq安装
  • 轻松抓取网页内容!API助力开发者,快速数据采集
  • CSDN 直播:腾讯云大数据 ES 结合 AI 大模型与向量检索的新一代云端检索分析引擎 8月-8号 19:00-20:30
  • 区块链智能合约代码示例
  • Spring Boot介绍--快速入门--约定优于配置
  • Scons编译lib库
  • React源码解析18(1)------ React.createElement 和 jsx
  • 系列3-常见的高可用MySQL解决方案