博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - Divide Two Integers
阅读量:6271 次
发布时间:2019-06-22

本文共 1291 字,大约阅读时间需要 4 分钟。

题目:

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

思路:

吐槽这种题目,这就像你明明可以买到过年回家的直达票,有票且一键解决,却去买分段票,路途不耽误时间吗?而且买分段票时中间容易出差错(bugs),最终可能回不了家(运行结果错误)。

package manipulation;public class DivideTwoIntegers {    public int divide(int dividend, int divisor) {        if ((dividend == Integer.MIN_VALUE && divisor == -1) || divisor == 0) return Integer.MAX_VALUE;        if (divisor == 1) return dividend;        if (divisor == -1) return -dividend;                long a = Math.abs((long)dividend);        long b = Math.abs((long)divisor);                long base = b;        int i = 0;        long[] nums = new long[32];        nums[0] = b;        while (nums[i] <= a && nums[i] > 0) {            nums[i+1] = base << (i+1);            ++i;        }        --i;                int cnt = 0;        while (a > 0 && i >= 0) {            while (a - nums[i] >= 0) {                a -= nums[i];                cnt += (1 << i);            }            --i;        }                return ((dividend ^ divisor) >> 31) == 0 ? cnt : -cnt;    }        public static void main(String[] args) {        // TODO Auto-generated method stub        DivideTwoIntegers d = new DivideTwoIntegers();        System.out.println(d.divide(-2147483648, 2));    }}

 

转载地址:http://fslpa.baihongyu.com/

你可能感兴趣的文章
ES6 Module export与import复合使用
查看>>
第三篇、image 设置圆角的几种方式
查看>>
关于Vs2010 C#使用DirectX的问题
查看>>
EPP(Eclipse PHP)语法高亮仿EditPlus配置
查看>>
OA账号架构权限的问题
查看>>
030——VUE中鼠标语义修饰符
查看>>
python编辑csv
查看>>
sql游标的使用与exec的两种用法
查看>>
数据结构
查看>>
78/90 Subsets --back tracking
查看>>
非托管资源的释放
查看>>
开篇寄语
查看>>
Dijkstra算法的C++实现
查看>>
phpstorm psr2样式.xml
查看>>
js 无限级分类
查看>>
umask值与Linux中文件和目录权限的关系
查看>>
python自动化开发-8
查看>>
bzoj 2127: happiness
查看>>
Python 3.5 之路 day1
查看>>
selenium使用chrome抓取自动消失弹框的方法
查看>>