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

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

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

If it is overflow, return MAX_INT.

题目含义:不要使用乘 除 取模,计算除法

 方法一:

1     public int divide(int dividend, int divisor) { 2         if (divisor == 1) return dividend; 3         if (dividend == Integer.MIN_VALUE && divisor == -1 || divisor == 0) return Integer.MAX_VALUE; 4         int sign = (dividend < 0) ^ (divisor < 0) ? -1 : 1, result = 0; 5         long m = Math.abs((long) dividend), n = Math.abs((long) divisor);//防止-2147483648转换后带来的溢出 6         while (m >= n) { 7 //            dividend非常大,所以把它切割成几块,一块一块地和divisor计算商,再把这些商都加起来就可以了。在切割的时候,各个小块是不均匀的。 8 //            第1块的大小正好是divisor的大小,第2块的大小正好是divisor扩大2倍的大小,第3块的大小正好是divisor扩大2²倍的大小, 9 //            第4块的大小正好是divisor扩大2³倍的大小......以此类推,直到把dividend分割完毕。10             long tempFenMu = n;11             for (int round = 0; tempFenMu <= m; round++) {12                 m -= tempFenMu;13                 tempFenMu <<= 1;14                 result += 1 << round;15             }16         }17         return sign * result;       18     }

 

转载于:https://www.cnblogs.com/wzj4858/p/7724107.html

你可能感兴趣的文章
如何在CMainFrame类中调用CxxxView视图类中的成员
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>
修改node节点名称
查看>>
Java 文件下载
查看>>
图论——读书笔记 (深度优先搜索)
查看>>
PAT(B) 1014 福尔摩斯的约会(Java)
查看>>
PAT甲级题解-1123. Is It a Complete AVL Tree (30)-AVL树+满二叉树
查看>>
不要过早追求通用
查看>>
带ifrmae的弹窗
查看>>
20172310 2017-2018《程序设计与数据结构》(下)第二周学习总结
查看>>
C#中webBrowser加载页面中的不同域的iFrame的源代码的取得
查看>>
iOS/Android 微信及浏览器中唤起本地APP
查看>>
[Usaco2005 nov]Grazing on the Run 边跑边吃草 BZOJ1742
查看>>
flex中dragdrop不响应的原因
查看>>
.Net学习笔记----2015-07-08(基础复习和练习01)
查看>>
1#Two Sum(qsort用法)
查看>>
Spark 各个组件关系
查看>>