代码实现:
思路:用减法模拟除法
// 用减法模拟除法 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; }