剑指 Offer II 001. 整数除法

整数除法 题目链接

题目要求:
给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。

注意:
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231-1

分析思路:题目要求不能使用乘号和除号进行运算,可以利用减法实现除法。

考虑数据非常大,利用被除数大于除数时,比较是否大于其2倍,继续比较是否大于其4倍、8倍等。如果被除数最多大于除数的2k倍,那么被除数减去除数的2k倍。 时间复杂度为O(logn);

具体实现 代码如下

public static int divide(int a, int b){if(a==Integer.MIN_VALUE && b==-1)return Integer.MAX_VALUE;  //特殊情况int mark=2;    //先将数据全部转换为负数,然后再根据符号判断结果if(a>0){        mark--;a=-a;}if(b>0){mark--;b=-b;}int res=divideCore(a,b);return (mark&1)==1? -res:res;}public static int divideCore(int a,int b){int res=0;while(a<=b){int c=b;int d=1;while(c>=(Integer.MIN_VALUE/2)&&c+c>=a){              //避免溢出 当c<Integer.MIN_VALUE c+c就会溢出c+=c;d+=d;}a-=c;res+=d;}return res;}

剑指offer II 001.整数除法相关推荐

  1. 剑指 Offer II 001. 整数除法

    文章目录 题目 一.减法代替除法 二.位运算 题目 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'.除号 '/' 以及求余符号 '%' . 注意: 整数除法的结果应当 ...

  2. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  3. 力扣OJ 剑指 Offer II

    目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...

  4. Leetcode刷题笔记——剑指offer II (六)【图】

    文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...

  5. 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合

    文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...

  6. 剑指 Offer II 115. 重建序列

    剑指 Offer II 115. 重建序列 题目描述 给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 [1,n] 的整数的排列.还提供了一个 2D 整数数组 sequences ...

  7. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】

    这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...

  8. LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和

    剑指 Offer II 056. 二叉搜索树中两个节点之和 Ideas 这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查 ...

  9. 剑指 Offer II 014. 字符串中的变位词

    剑指 Offer II 014. 字符串中的变位词 题目 示例 解答 题目来源为leetcode 题目 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的某个变位词. 换句话说,第一个字符串 ...

最新文章

  1. ajax核心代码提交,ajax表单在Asp.net核心提交后的RedirectToAction
  2. 收官礼 |《神策 2018 数据驱动大会回顾专刊》发布,你要的干货,已打包!
  3. 怎么让热图显示基因名_R 生信数据可视化 01 | 聚类热图
  4. 今天在海淀黄庄地铁站真实经历 写下来希望我的好友可以看一下!
  5. IDEA开发中,类的头位置生成作者时间信息
  6. [国家集训队] tree Ⅱ
  7. c语言结构体中整形数组初始化,c – 将{0,0}在结构体中初始化数组?
  8. 打开网页到我们看到页面显示的过程中发生了什么?
  9. python lambda 判断_在Python的Filter中使用lambda函数时,为何达不到预期效果?
  10. php 浮点数 模运算,同余与模运算
  11. linux 开发板模拟u盘,ARM-Linux开发 - USB Gadget Storage 制作模拟U盘
  12. TOUCH  PANEL
  13. 74LS138译码器实现举重裁判电路-QuartusII 软件仿真
  14. 自动尺寸标注 html,PxCook - 高效易用的自动标注工具,生成前端代码,设计研发协作利器...
  15. 四种常见的post请求中的参数形式
  16. Android Studio 修改 Java 语言版本到 1.8
  17. php重载求圆锥体积,编写一函数文件,实现求一个圆锥体的体积。
  18. 下血本买的!1-3年的Android开发工程师看过来,挥泪整理面经
  19. 北京CBD核心区有哪些值得加入的科技公司
  20. 3.《The Shawshank Redemption》

热门文章

  1. Angular cdk 学习之 Scrolling
  2. windows 7 自动登录默认帐号的设置方法
  3. VMware中三种网络配置作用总结(桥接网络、NAT网络、仅主机模式)
  4. solidity学习记录4 (函数的初步入门)
  5. linux关闭终端提示音
  6. android 6 videoview,Android使用VideoView进行视频播放
  7. ffmpeg 提取mp4里的h264流和pcm流
  8. android音乐播放器监听器,android 音乐播放器电话监听
  9. 【案例分享】菊风云 | Watch!儿童手表实现视频通话,竟如此简单!
  10. HTML引用页眉页脚,【记录】docbook为html,pdf添加页眉和页脚