Divide Two Integers - Leetcode

原创 2015年11月20日 12:10:05

题意:不使用乘、除和取余的操作。来做除法
思路:
1、使用减法,每将dividend减divisor,count加1,直到剩余的数字小于divisor。最后超时了。
2、改用移位的方法,类似于我们手动计算除数时是从最高位开始。最后通过。

class Solution {
public:
    int divide(int dividend, int divisor) {
        long long a=dividend;
        long long b=divisor;
        long long c=abs(a);
        long long d=abs(b);
        long long count=0;
        bool positive=true;
        if(dividend<0&&divisor>0)
        {
            positive=false;
        }
        if(dividend>0&&divisor<0)
            positive=false;
        while(c>=d)
        {
            long long x=d;
            for(int i=0;c>=x;i++,x<<=1)
            {
                c-=x;
                count+=1<<i;
            }
        }
        //当被除数是0x80000000,除数是-1,count=2147483648,超出了整型数的表示范围,
        //所以最后返回MAX_INT
       if(positive&&count>2147483647) return 2147483647; 
       else return positive?count:(-count);
    }
};

[LeetCode-29] Divide Two Integers(两个整数相除,不用乘除取余算术符)

Divide two integers without using multiplication, division and mod operator.If it is overflow, retur...
  • xy010902100449
  • xy010902100449
  • 2015年09月15日 19:01
  • 914

LintCode数学题总结

LC上有一些标记为mathematics的题目,基本就是纯数学题或者数字题,也是需要掌握的。 517. Ugly Number 丑数,是一个正数,并且因子只包含2、3、5。此外,1也算丑数。0和负数都...
  • luoshengkim
  • luoshengkim
  • 2016年08月09日 10:58
  • 987

LeetCode Divide Two Integers 不使用除号取模乘号实现两数相除

不使用乘法,除法和模操作实现除法运算。 思路就是用被除数减去除数,减尽为止,如下面程序。 不过很可惜,上面的程序是无法通过的,因为需要优化一下。上面的程序是基本思想,所以,先要知道这个程序。 下面...
  • kenden23
  • kenden23
  • 2013年11月27日 17:13
  • 7274

【python】【leetcode】【算法题目2—Add Two Numbers】

【python】【leetcode】【算法题目2—Add Two Numbers】 题目原文: You are given two linked lists representing two non-...
  • u014615155
  • u014615155
  • 2016年11月21日 12:05
  • 1789

leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)

c++刷leetcode,有题目和算法代码,可直接在leetcode提交通过。
  • GOGO_YAO
  • GOGO_YAO
  • 2016年07月24日 20:59
  • 544

【LeetCode编程学习(C语言)】1.Two Sum

LeetCode编程之简单篇,两个数求和,采用穷举和hash对比
  • yake827
  • yake827
  • 2016年03月28日 13:39
  • 4289

HDU 5047 Sawtooth (规律+java各种读入输出模板)

Sawtooth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total...
  • qq_34374664
  • qq_34374664
  • 2017年12月03日 01:09
  • 86

leetCode练习(45)

题目:Jump Game II 难度:hard 问题描述: Given an array of non-negative integers, you are initially position...
  • u010771890
  • u010771890
  • 2016年10月08日 16:22
  • 396

leetcode 1: 找出两个数相加等于给定数 two sum

问题描述对于一个给定的数组,找出2个数,它们满足2个数的和等于一个特定的数,返回这两个数的索引。(从1开始) Given an array of integers, find two numbers...
  • quzhongxin
  • quzhongxin
  • 2015年04月24日 11:08
  • 1499

Divide Two Integers不使用乘除法来计算两个数相除

题目描述 分析 不使用乘除法来计算两个数相除,那就从除法的定义出发:商表示的是被除数里包含了多少个除数。那最直接的一种办法,就是循环减除数,累加次数,直到不能再减。这么粗暴的办法,很容易会超时,举个...
  • DoWhatIWant_comeon
  • DoWhatIWant_comeon
  • 2017年06月04日 19:22
  • 115
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Divide Two Integers - Leetcode
举报原因:
原因补充:

(最多只允许输入30个字)