剑指offer II 001.整数除法
剑指 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.整数除法相关推荐
- 剑指 Offer II 001. 整数除法
文章目录 题目 一.减法代替除法 二.位运算 题目 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'.除号 '/' 以及求余符号 '%' . 注意: 整数除法的结果应当 ...
- Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】
目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...
- 力扣OJ 剑指 Offer II
目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...
- Leetcode刷题笔记——剑指offer II (六)【图】
文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...
- 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合
文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...
- 剑指 Offer II 115. 重建序列
剑指 Offer II 115. 重建序列 题目描述 给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 [1,n] 的整数的排列.还提供了一个 2D 整数数组 sequences ...
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...
- LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
剑指 Offer II 056. 二叉搜索树中两个节点之和 Ideas 这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查 ...
- 剑指 Offer II 014. 字符串中的变位词
剑指 Offer II 014. 字符串中的变位词 题目 示例 解答 题目来源为leetcode 题目 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的某个变位词. 换句话说,第一个字符串 ...
最新文章
- ajax核心代码提交,ajax表单在Asp.net核心提交后的RedirectToAction
- 收官礼 |《神策 2018 数据驱动大会回顾专刊》发布,你要的干货,已打包!
- 怎么让热图显示基因名_R 生信数据可视化 01 | 聚类热图
- 今天在海淀黄庄地铁站真实经历 写下来希望我的好友可以看一下!
- IDEA开发中,类的头位置生成作者时间信息
- [国家集训队] tree Ⅱ
- c语言结构体中整形数组初始化,c – 将{0,0}在结构体中初始化数组?
- 打开网页到我们看到页面显示的过程中发生了什么?
- python lambda 判断_在Python的Filter中使用lambda函数时,为何达不到预期效果?
- php 浮点数 模运算,同余与模运算
- linux 开发板模拟u盘,ARM-Linux开发 - USB Gadget Storage 制作模拟U盘
- TOUCH PANEL
- 74LS138译码器实现举重裁判电路-QuartusII 软件仿真
- 自动尺寸标注 html,PxCook - 高效易用的自动标注工具,生成前端代码,设计研发协作利器...
- 四种常见的post请求中的参数形式
- Android Studio 修改 Java 语言版本到 1.8
- php重载求圆锥体积,编写一函数文件,实现求一个圆锥体的体积。
- 下血本买的!1-3年的Android开发工程师看过来,挥泪整理面经
- 北京CBD核心区有哪些值得加入的科技公司
- 3.《The Shawshank Redemption》
热门文章
- Angular cdk 学习之 Scrolling
- windows 7 自动登录默认帐号的设置方法
- VMware中三种网络配置作用总结(桥接网络、NAT网络、仅主机模式)
- solidity学习记录4 (函数的初步入门)
- linux关闭终端提示音
- android 6 videoview,Android使用VideoView进行视频播放
- ffmpeg 提取mp4里的h264流和pcm流
- android音乐播放器监听器,android 音乐播放器电话监听
- 【案例分享】菊风云 | Watch!儿童手表实现视频通话,竟如此简单!
- HTML引用页眉页脚,【记录】docbook为html,pdf添加页眉和页脚