首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    LeetCode题目29:相除

    原题描述 + 给定个整数,被除数 dividend 和除数 divisor。将相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。...fail 先说说边界条件 首先除数为+1的时候,根本不用算,直接根返回结果即可; 除数为-1的时候,如果被除数是 ,小心溢出。...否则,安全返回相反即可。 如果不是上面种情况,建议把操作数的符号统一一下,方便处理。最后再根据操作数原本的正负性做正负判别。...还是上面的200000000除以3的例子,因为初始判定时我们知道200000000至少能消费1个3,所以我们能确定商至少是1。然后我们激进一点,把除数3扩大倍到6,发现也能消费,那么商至少是2了。...divisor) return 0; else if (divisor == 1) return dividend; else if (divisor == -1) {

    58020

    Leetcode No.29 相除

    一、题目描述 给定个整数,被除数 dividend 和除数 divisor。将相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。...整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例 1: 输入: dividend = 10,...假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。...首先11比3大,结果至少是1, 然后我让3翻倍,就是6,发现11比6还要大,那么结果就至少是2了,那我让这个6再翻倍,得12,11小于12。最终结果肯定在2和4之间。...rs; } int div(int a,int b){ if(a>b){ return 0; } int cnt=1;

    51620

    相除(位运算)

    1. 题目 给定个整数,被除数 dividend 和除数 divisor。将相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。...示例 1: 输入: dividend = 10, divisor = 3 输出: 3 示例 2: 输入: dividend = 7, divisor = -3 输出: -2 说明: 被除数和除数均为...假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。 本题中,如果除法结果溢出,则返回 2^31 − 1。...解题 将除数乘以n次2(左移操作),直到它大于被除数,那么商加上1<<(n-1) 被除数减少(除数<<(n-1)) class Solution { public: int divide(int...);//减去,除数乘以n-1次2 quotient += 1<<(count-1); } if(negative) return -quotient

    78920

    相除(中等)

    题目描述 给定个整数,被除数 dividend 和除数 divisor。将相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。...复杂度为 空间复杂度: ---- 总结 这道题的解法,主要涉及的模板有个。 一个是「二分」模板,一个是「快速乘法」模板。都是高频使用的模板。...其中「二分」模板其实有套,主要是根据 check(mid) 函数为 true 时,需要调整的是 l 指针还是 r 指针来判断。...(k > 0) { if ((k & 1) == 1) ans += a; k >>= 1; a += a; } return ans;...由于 LeetCode 的题目随着周赛 & 双周赛不断增加,为了方便我们统计进度,我们将按照系列起始时的总题作为分母,完成的题目作为分子,进行进度计算。当前进度为 29/1916 。

    66510

    ☆打卡算法☆LeetCode 29、相除 算法解析

    一、题目 1、算法题目 “给定个整数,进行相除,不能使用乘法、除法和mod运算符。” 题目链接: 来源:力扣(LeetCode) 链接:29....相除 - 力扣(LeetCode) (leetcode-cn.com) 2、题目描述 给定个整数,被除数 dividend 和除数 divisor。...将相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。...// 一般情况,使用二分查找 // 将所有的正数取相反,这样就只需要考虑一种情况 bool rev = false;...三、总结 如果我们将被除数和除数的其中(恰好)一个变为了正数,那么在返回答案之前,我们需要对答案也取相反

    32930

    Java整数相除向上取整

    前言:Java个整数相除,如果不能整除,默认是向下取整的。例如:11 除以 3 的结果是 3。然而,某些情况下(eg. 把11个糖果,每3个分一堆,不足三个也分成一堆,可以分几堆?)...对于可以整除的情况 x = 9,y = 3 (x + (y - 1)) / y,x加上了一个比y小的,最终(x + (y - 1)) / y = (x / y) ...y - 1 商为(x /...y), 余数为(y – 1),余数相当于相除结果都小数部分,会被舍去,最终(x + (y – 1)) / y` = (x / y) 对于不可以整除的情况 x = 11, y = 3 11.../ 3 = 3 ... 2 x + (y – 1) = (3 * 3 + 2) + (3 – 1) = (3 * 3 + 2 – 1)+ 3= (3 * 3 + 3) + 2 – 1 x + (y...– 1) / y = ((3 * 3 + 3) + 2 – 1 )/ 3 = 4 就是x不能整除y余数肯定在1到y – 1之间,从中取出1给y – 1,使得被除数增加了一个y,进而商会增加1,余数部分为

    3.1K20
    领券