做美图 网站有哪些东西,辽宁省建设厅网站中级职称公示,h5手机网站怎么做,网站开发先学前端还是后端29. 两数相除
给你两个整数#xff0c;被除数 dividend 和除数 divisor。将两数相除#xff0c;要求 不使用 乘法、除法和取余运算。
整数除法应该向零截断#xff0c;也就是截去#xff08;truncate#xff09;其小数部分。例如#xff0c;8.345 将被截断为 8 #x…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
class Solution {public int divide(int a, int b) {// 特殊情况1 a 0 或 b 1 都返回aif(a 0 || b 1){return a;}// 特殊情况2 b -1 如果a是-2^31防止溢出返回2^31 - 1if(b -1){return a Integer.MIN_VALUE ? Integer.MIN_VALUE - 1 : -a;}//确定最后的符号 也就是a和b里面有几个负数(位运算小技巧)boolean positive (a ^ b) 0;//为避免溢出转换为负数进行计算a a 0 ? a : -a;b b 0 ? b : -b;//快速相减int res 0;while(a b){int base 1;int divisor b;//使用减法 避免溢出while(a - divisor divisor){divisor 1;base 1;}res base;a - divisor;}return positive ? res : -res;}
}