29. Divide Two Integers

QT+SOEM主站协议库实战指南—从编译到嵌入式应用 本文提供了一份QT与SOEM开源EtherCAT主站协议库的集成实战指南。详细介绍了在Windows和Linux平台下编译SOEM库的步骤,并讲解了如何将其无缝集成到QT项目中,构建具备实时监控与控制功能的工业上位机应用。内容涵盖从环境搭建、核心协议开发到嵌入式部署与优化的全流程,为开发高性价比、自主可控的工业控制解决方案提供完整路径。 阅读详情

【题目】

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.


题目两句话,不用乘除模求两个数的除法。我把除法化成减法运算,结果直接TLE了。

后来看了下别人的做法,是把除数用左移来扩大,然后减去扩大之后的部分,重复下去,记录次数,就是 结果了。


代码如下:

class Solution {
public:
    int divide(int dividend, int divisor) {
        if(divisor == 0 || (dividend == INT_MIN && divisor == -1))
            return INT_MAX;
        
        bool native = (dividend < 0) ^ (divisor < 0) ? true : false;
        
        long long dividend1 = labs(dividend);
        long long divisor1 = labs(divisor);
        
        int res = 0;
        while(dividend1 >= divisor1){
            long long tmp = divisor1, count = 1;   //注意每次在此处初始化
            while(dividend1 > (tmp << 1)){
                tmp <<= 1;
                count <<= 1;
            }
            dividend1 -= tmp;
            res += count;    
        }
        
        return native ? -res : res;
    }
};

有几个点需要注意:

1.参数合法性检测。除数不为0自然都知道,但当除数为INT_MIN时,且被除数如果是-1的话,那么得到的结果是INT_MAX+1,会产生溢出。

2.使用long long类型来处理溢出。我们计算时需要对被除数和除数的绝对值进行计算这是自然的,如果除数或者被除数为INT_MIN,取绝对值是会产生溢出的,所以直接采用long long类型计算,并且下面的tmp和count也采用long long类型,都是为了避免溢出。

3.算法核心,举个例子吧:15 ÷ 3 

首先我们要提高效率,就要扩大被除数,让我们减法的过程尽可能少。那么就采用左移<<,如果左移结果不大于15就继续左移,此例中我们可以得到左移的序列为:3->6->12,但是左移产生的包含除数3的次数也是移位级别增长的,所以count同时也要左移。并累加结果到res。

此例情况比较特殊,如果出现最后一次左移的结果为x,15-x>3的话,我们需要重新开始左移,count归1,tmp归divisor,重新开始计数,再次累加到res。

如此循环万福,不满足条件跳出循环,即得到正确的结果。


【毕业设计参考】基于yolov8+pyqt5自适应界面设计的锂电池表面缺陷检测系统 基于YOLOv8+PyQt5的锂电池表面缺陷检测系统结合了先进的目标检测技术与友好的用户界面设计,为锂电池质量检测提供了一种高效、准确的解决方案。未来,随着深度学习技术的不断发展,我们可以进一步优化模型,提高检测精度和速度,同时拓展系统功能,如实现实时视频流检测、与生产系统的深度集成等,为锂电池产业的发展注入新的活力。希望本文对大家在相关领域的研究和实践有所帮助,欢迎大家在评论区交流讨论。 阅读详情

相关推荐

基于ESP32-S3与PCM5102的HiFi网络收音机复刻指南:从硬件设计到软件配置

本文提供了一份详细的基于ESP32-S3与PCM5102的HiFi网络收音机复刻指南。内容涵盖从核心硬件选型(如ESP32-S3主控与PCM5102 DAC芯片)、四路独立LDO供电设计,到软件环境配置、固件烧录及常见问题调试的全过程,旨在帮助创客打造一台支持网络电台、本地播放与蓝牙连接的高保真音频播放器。

weixin_30632267的博客 190

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

别再只改config了!YOLO/RT-DETR多通道输入实战:数据集结构、多卡训练与参数优先级避坑指南

本文详细解析了YOLO/RT-DETR模型在多通道输入(如8通道多光谱图像)中的实战应用,涵盖数据集结构优化、数据加载器改造、模型参数调优及多卡训练配置。针对常见的多通道输入报错问题,提供了系统的解决方案和性能优化技巧,帮助开发者高效实现非标准数据格式的适配与训练。

weixin_30955617的博客 397

Leetcode 29 —— Divide Two Integers

29. Divide Two Integers My Submissions Question Total Accepted: 62780 Total Submissions: 403300 Difficulty: Medium Divide two integers without using multiplication, division and mo

decode 1042

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8127

盘点军工行业软件研发的那些常用GJB标准

GJB5000、2786、438、141、102、8114等...

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 9482

LeetCode:29. Divide Two Integers

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 d...

Wisimer 182

别再调PID了!用MATLAB/Simulink给四旋翼无人机搭个ADRC控制器(附完整仿真模型)

本文详细介绍了在MATLAB/Simulink环境中为四旋翼无人机搭建ADRC控制器的完整流程,包括核心原理、Simulink建模、参数调试技巧及与PID控制的性能对比。ADRC通过扩张状态观测器(ESO)有效提升无人机在复杂扰动下的控制性能,特别适合四旋翼无人机这类强耦合系统。文章还提供了完整的仿真模型和工程实践问题解决方案。

weixin_26808439的博客 383

leetcode 29 - Divide Two Integers

leetcode题目汇集 - Divide Two Integers leetcode 29 - Divide Two Integers 题目要求 Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT. 思

知足常乐,知行合一 275

Unity引擎开发:复杂动作系统_动作捕捉数据的应用与整合

通过以上步骤,我们可以在Unity中有效地应用和整合动作捕捉数据,以实现更加真实和流畅的动画效果。从导入文件格式的选择,到预处理和优化,再到实时应用和调试验证,每一步都至关重要。希望本文能帮助你在Unity项目中更好地利用动作捕捉数据,提升动画质量和性能。

chenlz2007的博客 959

波士顿房价预测分析----以线性回归LinearRegression为例

波士顿房价数据集包括506个样本,每个样本包括13个特征变量和该地区的平均房价,房价显然和多个特征变量相关,先选择一元线性回归与多个特征建立线性方程,观察模型预测的好坏,再选择多元线性回归进行房价预测。13个特征变量缩写含义CRIM城镇人均犯罪率ZN住宅用地所占比例INDUS城镇中非住宅用地所占比例CHAS虚拟变量,用于回归分析NOX环保指数RM每栋住宅的房间数AGE1940 年以前建成的自住单位的比例DIS距离 5 个波士顿的就业中心的加权距离RAD。

我走的每一步都算数 843

LeetCode 29. Divide Two Integers(二分)

题目来源:https://leetcode.com/problems/divide-two-integers/ 问题描述 29.Divide Two Integers Medium Given two integersdividendanddivisor, divide two integers without using multiplication, division and ...

da_kao_la的博客 396

【OpenClaw从入门到精通】第07篇:2026实测!零基础开发OpenClaw自定义Skill——招聘外呼自动邀约完整教程

本文聚焦OpenClaw自定义Skill开发全流程,针对现成技能无法满足个性化场景(如专属招聘流程、内部系统对接)的痛点,以“招聘外呼自动邀约”为实战案例,从概念认知、环境搭建、分步开发到测试优化,手把手教读者从零构建自定义Skill。内容涵盖Skill目录结构、SKILL.md核心配置、Python主逻辑实现、API对接、安全配置等关键环节,融入2026年ClawHavoc事件安全警示,强调最小权限、凭证安全等开发原则。所有代码经实测可运行,步骤详尽且兼顾新手友好与进阶需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1193

leetcode-29. Divide Two Integers

leetcode-29. Divide Two Integers题目: Divide two integers without using multiplication, division and mod operator. 第二遍做的时候还是没想起来。。其实就是二分法。但是跟一般的二分有点不一样。里面要嵌套一个while保证除数以2的幂的速度增长。这样先找结果的最高位,在找次高位以此类推。直到

千念飞羽的专栏 313

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[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

VB摄像头监控

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

leetcode29. Divide Two Integers

leetcode29. Divide Two Integers 思路:辗除法可得到商,二进制辗除法和十进制是类似的,只是十进制的时候是每次进位是10,而二进制每次进位是2,且十进制进位方式是*10,二进制是左移一位。 x = ai*10^i+… x = ai*2^i+…. 一个道理引申出题:只需用乘法,不许用除法,获取商。则可用类似原理解题

慕鹞 182

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode1-100: 29. Divide Two Integers

Leetcode1-100: 29. Divide Two Integers问题描述解题思路代码实现    错误实现    正确实现分析 问题描述 Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the quotient afte

Y123iwantit的博客 233

LeetCode 29. Divide Two Integers

LeetCode 29. Divide Two Integers Solution1: 参考网址:[1]https://blog.csdn.net/qq_31617121/article/details/80458587 [2]http://www.cnblogs.com/grandyang/p/4431949.html 相当于复杂度优化到logN. 如 100 3 普通方法是 3...

Allenlzcoder的博客 314

29 - Divide Two Integers

029 - Divide Two Integers

uso的博客 295

29. Divide Two Integers

29. Divide Two Integers DescriptionHintsSubmissionsDiscussSolution Pick One Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Re...

lifeqiuzhi521的博客 268

leetcode29_Divide Two Integers

一.问题描述 Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT. 实现两个int的除法,代码中不能使用乘、除和取余操作,溢出时返回max_int。 二.代码编写     最基

越努力越幸运 389
上一篇: 矩阵的最小路径和 [DP]
下一篇: muduo库的EventLoopThread类剖析
FreeeLinux
博客等级 码龄11年 421粉丝 356原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值