本文主要是介绍2024/4/1—力扣—两数相除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码实现:
思路:用减法模拟除法
// 用减法模拟除法 int func(int a, int b) { // a、b均为负数int ans = 0;while (a <= b) { // a的绝对值大于等于b,表示此时a够减int t = b;int count = 1; // 用来计数被减的次数// t >= INT_MIN / 2:防止减数越界,并且保证a的绝对值比两倍减数的绝对值大while (t >= INT_MIN / 2 && a <= t + t) {count += count;t += t;}ans += count;a -= t;}return ans; }int divide(int a, int b) {// 特殊情况,特殊处理if (a == INT_MIN && b == -1 || b == 0) {return INT_MAX;}if (a == INT_MIN && b == 1) {return INT_MIN;}// 标志位,储存运算结果的正负bool flag = true;// 将a、b统一转换为负数进行处理if (a > 0) {flag = !flag;a = -a;}if (b > 0) {flag = !flag;b = -b;}// 用减法模拟除法int ans = func(a, b);// 根据标志位判定结果的正负return flag ? ans : -ans; }
这篇关于2024/4/1—力扣—两数相除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!