• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP-两数相除

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

示例 1:

输入: dividend = 10, divisor = 3
输出: 3
示例 2:

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

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

来源:力扣(LeetCode)

class Solution {

    /**
     * @param Integer $dividend
     * @param Integer $divisor
     * @return Integer
     */
    function divide($dividend, $divisor) {
        $max = pow(2,31) - 1;
        $min = 0-pow(2,31);
        if($dividend==$min && $divisor==-1) return $max;
        $flag = 1;
        if($dividend > 0){
            $dividend = 0 - $dividend;
        }else{
            $flag = -$flag;
        }
        if($divisor > 0){
            $divisor = 0 - $divisor;
        }else{
            $flag = -$flag;
        }
        $s = 0;
        while($dividend <= $divisor){
            $k = 1;
            $tmp = $divisor;
            #本题中,如果除法结果溢出,则返回$max,在子while循环条件中得以利用
            while($dividend < $tmp+$tmp && $tmp+$tmp<0){
                $tmp += $tmp;
                $k += $k;
            }
            $s += $k;
            $dividend -= $tmp;
        }
        return ($flag>0)?$s:-$s;    
    }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于支付宝免密代扣申请(全),小程序,公众号,php发布时间:2022-07-10
下一篇:
【PHP】【PHP】php源码加密(一)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap