整数除法
问题简述
给定两个整数 a 和 b ,求它们的除法的商 a/b。
要求不得使用乘号 '*'、除号 '/' 以及求余符号 '%'。思路1:减法(超时)
用 a 循环减 b,直到为负;
越界讨论:因为是整数除法,实际的越界情况就一种,就是
a=-2^31,b=-1极端情况:
a=2^31-1, b=1要循坏2^31-1次;
思路2:二分思想
初始化返回值
ret = 0a > b时,不断将b翻倍(乘 2),直到再翻倍一次就大于a,记翻倍后的数为tmp_b,翻的倍数为tmp,然后将ret加上tmp、a减去tmp_b;a减去tmp_b后循环以上过程,直到a小于b;
Last updated