leetcode 29. Divide Two Integers(两个数相除)

第6章: MMU Notifier在KVM虚拟化中的应用 本文分析了KVM如何利用MMU Notifier机制维护客户机与宿主机地址映射一致性。KVM采用三层地址空间转换架构(GVA→GPA→HPA),通过硬件辅助虚拟化(EPT/NPT)实现高效转换。重点探讨了KVM MMU Notifier回调实现,包括invalidate_range_start/end等核心函数,以及HVA范围处理流程。当宿主机内存变化时,KVM通过注册的notifier回调及时更新映射关系,确保虚拟化环境的内存一致性。文章详细解析了相关数据结构和关键代码实现,揭示了KVM内存管理的核心机制 阅读详情

Given two integers dividend and divisor, divide two integers without using multiplication, division, and mod operator.

The integer division should truncate toward zero, which means losing its fractional part. For example, 8.345 would be truncated to 8, and -2.7335 would be truncated to -2.

Return the quotient after dividing dividend by divisor.

Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For this problem, if the quotient is strictly greater than 231 - 1, then return 231 - 1, and if the quotient is strictly less than -231, then return -231.

Example 1:

Input: dividend = 10, divisor = 3
Output: 3
Explanation: 10/3 = 3.33333… which is truncated to 3.

计算两个整数的除法,但是不能用乘法,除法和mod操作。
结果靠近0取整。

思路:
最简单的想法就是不断用被除数 - 除数,看能减多少次。但是这样的计算量有时会很大,比如被除数很大,除数很小的时候。
于是可通过把除数不断x2,直到接近被除数,这样计算量就是logN级别的。

而且注意到整数的范围是[−231, 231 − 1],负边界比正边界的绝对值大,
这就导致了如果被除数是负边界,而除数是-1,结果就会溢出。这种情况直接返回INT_MAX。

为了方便,会首先判断结果的符号,然后用被除数和除数的绝对值来计算,
这样还是刚才的问题,负边界的绝对值又溢出了,所以要转为long型来计算。

    public int divide(int dividend, int divisor) {
        if(dividend == Integer.MIN_VALUE && divisor == -1) 
            return Integer.MAX_VALUE;
        
        int res = 0;
        int sign = (dividend > 0) ^ (divisor > 0) ? -1 : 1;
        long dvd = Math.abs((long)dividend);
        long div = Math.abs((long)divisor);
        
        while(dvd >= div) {
            long tmp = div;
            long mul = 1;
        	
        	//注意这里是while,不是if,if会TLE    
            while(dvd >= (tmp << 1)) {
                tmp <<= 1;
                mul <<= 1;
            }
            dvd -= tmp;
            res += mul;
        }
        return sign==1 ? res : -res;
    }
pscad IEEE标准系统搭建说明 pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。 立即下载

相关推荐

Frida实战:如何逆向分析某电商App的doCommandNative函数(附完整Hook脚本)

本文详细介绍了如何使用Frida逆向分析电商App中的doCommandNative函数,涵盖动态注册识别、SO加固对抗及高级Hook脚本编写等实战技巧。通过完整Hook脚本示例,帮助安全研究人员深入理解JNICLibrary的关键函数逆向分析方法,提升移动应用安全研究能力。

weixin_29327977的博客 615

29. Divide Two Integers(两数相除)两种解法(C++ & 注释)

29. Divide Two Integers(两数相除)1. 题目描述2. ()2.1 解题思路2.2 实例代码 1. 题目描述 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例 1: 输入: dividend =

主要研究图形学相关领域 1196

量子城域网系列(六):从星型到环形,解析QKD网络拓扑的演进与选型

本文深入解析了量子密钥分发网络从星型到环形等主流拓扑结构的演进历程与核心原理。针对量子城域网的实际部署,文章详细对比了星型、总线型和环形拓扑的优缺点,并结合政务云、金融网点等典型应用场景,提供了实战选型指南,帮助读者在物理限制、安全需求与成本效率间找到最佳平衡。

weixin_29197835的博客 111

29. Divide Two Integers

29. 两数相除 给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数dividend除以除数divisor得到的商。 示例1: 输入: dividend = 10, divisor = 3 输出: 3 示例2: 输入: dividend = 7, divisor = -3 输出: -2 说明: 被除数和...

GGGGITFKBJG的主页 208

STM32 Modbus-RTU从零到实战:手把手教你用HAL库实现工业通信(附完整代码)

本文详细介绍了如何使用STM32 HAL库从零开始实现Modbus-RTU从机通信。内容涵盖RS485硬件设计、CubeMX串口与定时器配置、基于空闲中断的高效数据接收、协议栈状态机设计、CRC16校验实现以及常用功能码处理。文章提供了完整的代码框架和调试方法,帮助开发者快速构建稳定的工业通信节点。

weixin_28278377的博客 188

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 558

leetcode-top150-29. Divide Two Integers 两数相除

给定两个整数 dividend 和 divisor ,在不使用乘法、除法和取模运算符的情况下,对两个整数进行除法运算。整数除法应向零截断,这意味着丢失其小数部分。例如, 8.345 将被截断为 8 ,而 -2.7335 将被截断为 -2。将 dividend 除以 divisor 后返回商。1、选一数位,于此数位上以数字1~9乘除数,使之最接近被除数;2、做差,差作为新被除数,再进行下一数位之操作。涉及两个挑战,一是超时问题,二是边界条件。时值最小,故最优进制应是3。,原想法的计算复杂度是。

yexingzhe2018的博客 1231

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料 中颖单片机SH79F3213 制作的电动车小毛驴控制器量产资料,已量产十几万片,拿到手即可量产 1、提供原理图 2、提供PCB图 3、提供C语言源代码程序 4、提供清单 ...

m0_69036675的博客 4526

LeetCode 29. Divide Two Integers

题目描述(中等难度) 两个数相除,给出商。不能用乘法,除法和模操作。 本来觉得这道题蛮简单的,记录下自己的坎坷历程。 尝试1 先确定商的符号,然后把被除数和除数通通转为正数,然后用被除数不停的减除数,直到小于除数的时候,用一个计数遍历记录总共减了多少次,即为商了。 确定商的符号的时候,以及返回最终结果的时候,我们可能需要进行乘 -1 操作,即取相反数。而题目规定不让用乘法,所以我们需要知道计算机...

wind_liang的博客 1077

车载毫米波雷达实战:用MATLAB复现DDMA-MIMO雷达的Empty-band算法(附代码解析)

本文详细介绍了车载毫米波雷达中DDMA-MIMO技术的实战应用,重点解析了Empty-band算法的原理与MATLAB实现。通过搭建仿真环境,文章深入探讨了发射天线通道解调与相位法速度解模糊两大核心难题的解决方案,并提供了完整的代码解析,为雷达算法工程师提供了从理论到实践的清晰指南。

hill8的博客 559

【SLAM】探索explore_lite在移动机器人自主建图中的高效边界检测策略

本文深入解析了explore_lite在移动机器人自主建图中的应用,重点探讨了其高效的贪婪边界检测策略。该工具包专为资源受限平台设计,通过直接利用SLAM生成的地图信息,以极低的计算开销实现快速、稳定的未知区域探索,并与move_base导航框架无缝协作,是轻量级机器人自主探索的优选方案。

purple的博客 1067

Divide Two Integers(两个整数相除)

//参考derrantcm的博客,网址:https://blog.csdn.net/DERRANTCM/article/details/47052683 package algorithm; /* *https://blog.csdn.net/DERRANTCM/article/details/47052683 * 2个整数相除,不使用除法,乘法,取余 原题   Divide two i...

zyzn1425077119的博客 808

PCL点云算法与项目实战案例汇总(长期更新)

本专栏将深入探讨PCL(点云库)的基础算法,旨在帮助读者掌握点云处理的核心技术。内容涵盖点云的采样、过滤、配准、分割等基础操作,并结合实际案例,展示这些算法在工程中的应用。无论你是初学者还是有一定经验的开发者,都能通过本专栏加深对PCL的理解,提升在三维数据处理领域的技能。

纵马踏花向自由 3002

图解LeetCode:Divide Two Integers

文章目录我的思路算法优化代码实现总结 这是LeetCode的第29号题目,Divide Two Integers,题目要求计算两个数相除是多少,最后返回整数就可以。 比如给定10和4,那10/4是2;给定7和-3,那么7/(-3)应该返回2,题目要求不能用乘法、除法和取余操作。如果在面试时遇到这个题目该怎么求解呢?   我的思路 首先我们可以将除数和被除数都转为正数以简化操作,而对于除法...

码农的荒岛求生 398

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

leetcode记录29. Divide Two Integers

29. Divide Two Integers √ Accepted √ 989/989 cases passed (4 ms) √ Your runtime beats 100 % of cpp submissions √ Your memory usage beats 99.38 % of cpp submissions (8.3 MB) /* * @lc app=leetc...

我的博客 196

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Leetcode 29. Divide Two Integers 两数相除

Leetcode 29. Divide Two Integers 两数相除 标签: Leetcode 题目地址: https://leetcode-cn.com/problems/divide-two-integers/ 题目描述 给定两个整数,被除数&nbsp;dividend&nbsp;和除数&nbsp;divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数&nbs...

CoderWangSon 308

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

leetcode题解第29题 Divide Two Integers (两数相除)

题目的大意如下: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。 简单来说,就是需要在不借助python内部的乘、除、去余运算的情况下,实现整数除法运算,并返回运算的商的。余数忽略。 且在此之外,还有几点额外说明: 除数永远不会为0。 被除数和除数都是32位...

笔墨留年。 773

【Leetcode】29. 两数相除(Divide Two Integers)

Leetcode - 29 Divide Two Integers (Medium) 题目描述:不使用乘法、除法和 mod 运算符。 Input: dividend = 10, divisor = 3 Output: 3 解题思路:注意整数溢出的情况, 可以利用二分的思想优化求解。 public int divide(int dividend, int divisor) { int si...

厉兵秣码 287

LeetCode 29 — Divide Two Integers(两数相除)

Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the quotient after dividing dividend by divisor. The integer division sho...

卓尔货币的博客 905

LeetCode第29题思悟——两数相除(divide-two-integers)

LeetCode第29题思悟——两数相除(divide-two-integers) 知识点预告 对于Int型整数溢出的处理; 对于运算结果符号的判定; 位移运算的使用; 题目要求 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 来源:力扣(LeetCode...

博采众长,自成一派; 369

【LeetCode】29. 两数相除(Divide Two Integers)

本文探讨了如何在不使用乘法、除法和取余运算的情况下实现两数相除。主要思路是通过减法结合位运算(位移操作)来模拟除法过程。文章提出了两种高效解法:1)快倍增减法,通过指数加速减少减法次数;2)位移长除法,采用二进制逐位构造商。两种方法均需处理符号转换、32位整数溢出(特别是INT_MIN/-1的情况)和边界条件。代码实现使用Go语言,将中间变量转为int64避免溢出,并在最后对结果进行截断处理。验证表明,这些方法在时间复杂度(O(logN)或O(1))和正确性上均满足要求,适用于各种边界情况。

qq_32019341的博客 848

[ LeetCode ]#29. Divide Two Integers(两数相除 C++ & Python)

题目:29. Divide Two Integers Given two integersdividendanddivisor, divide two integers without using multiplication, division and mod operator. Return the quotient after dividingdividendbydiviso...

xn's blog 562

[leetcode] 29. Divide Two Integers

Description Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the quotient after dividing dividend by divisor. The integer di...

Learning from the mistakes 307

Leetcode29 Divide Two Integers

Leetcode29 Divide Two Integers题意理解解题思路代码 题意理解 题目全文如下: Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the quotient after di...

wxwjyq的博客 216

LeetCode: 29. Divide Two Integers (Medium)

1. 原题链接 https://leetcode.com/problems/divide-two-integers/description/ 2. 题目要求 给出被除数dividend和除数divisor,求出二者相除的商,余数忽略不计。 注意:不能使用乘法、除法和取余运算 3. 解题思路 陷阱一:MIN_VALUE/-1会溢出。因为Integer.MIN_VALUE = -...

aysk1112的博客 267

LeetCode 29 Divide Two Integers(两个整数相除)(*)

翻译不用乘法、除法、取余操作,将两个数相除。如果它溢出了,返回MAX_INT原文Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.代码一心扑到了递归上,可惜没能写出来…………烦躁至极还是找了别人的答案……class Solution

nomasp 5186
上一篇: leetcode 318. Maximum Product of Word Lengths(单词长度的最大积)
下一篇: leetcode 1480. Running Sum of 1d Array(一维数组的动态和)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值