29.两数相除

LeetCode——29. 两数相除 阅读详情

1.题目

在这里插入图片描述

2.解法

class Solution {
    public int divide(int dividend, int divisor) {
        // 判断是否同号,同号的最后的结果为正
        boolean sign = (dividend > 0) ^ (divisor > 0);
         // 将所有的正号都换成负号,因为MIN_VALUE不能转正号
         if (dividend > 0) dividend = -dividend;
         if (divisor > 0) divisor = -divisor;

         // 当除数大于等于被除数时进入循环, 因为是负数
         //除数等于, 有可能被除数除数相等
         // 被除数大于除数的话(负数),转为正数,商为0
         int result = 0; // 记录次数
         while (dividend <= divisor) {
             int tmp_result = -1; // 如果被除数除数相等就为-1
             int tmp_divisor = divisor;
             // 这里先<<1,是为了预防, 在dividend不大于之前退出
             // 不能超,一旦超了,就不能计算出准确的次数了
             while (dividend <= (tmp_divisor << 1)) {
                 // 效果小于于前一个数,乘以2后,也是小于,会溢出
                 // 如果等于的话,tmp_result已经默认为-1
                 if (tmp_divisor <= (Integer.MIN_VALUE >> 1)) break;
                 tmp_divisor = tmp_divisor << 1;
                 tmp_result = tmp_result << 1;  
             }
             dividend -= tmp_divisor;
             result += tmp_result;
         }
         if (!sign) {
             // 除数结果溢出,因为要转换成正数,所以等于MIN也算返回最大值
             if (result <= Integer.MIN_VALUE) return Integer.MAX_VALUE;
             result = -result;
         }
         return result;
    }
}


循环条件判断一次是一次,所以时间复杂度为商O(result),空间复杂度为O(1)

3.思考

@1:位运算符是用2进制位运算的,异或相同为0,不同为1,参考链接描述
整体就是利用移位,加速减的过程
在这里插入图片描述

C# HttpClient完全攻略:从入门到精通只需5步 HttpClient是.NET框架中用于发送HTTP请求和接收HTTP响应的类。它基于异步编程模型,使得网络操作更加高效和灵活。 阅读详情

相关推荐

Codex 命令行高效操作指南

本文详细介绍了Codex命令行工具的高效使用方法,包括安装配置、核心参数解析和实战技巧。通过`codex complete`、`codex explain`等指令,开发者可以快速生成代码、调试错误和重构项目,显著提升开发效率。特别推荐使用`--temperature`和`--max-tokens`参数优化生成结果。

weixin_29201313的博客 532

29. 两数相除

直到100>>5=3,刚好大于等于我们的除数3,这时我们将$ 100-2^5*3=4 $,也就是减去了32个3,接下来我们再处理4,同样手法可以再减去一个3。对于这种类型的题目,当题目要求不能使用乘法、除法时,那么则需要我们从移位、或、与、异或等位运算的角度来进行考虑,接下来我带着大家从这道题目入手,看看位运算到底是怎么应用的。要求商,我们首先想到的是减法,能被减多少次,那么商就为多少,但是明显减法的效率太低,那么我们可以用位移法,因为计算机在做位移时效率特别高,余数,是一种数学术语。

zhiyikeji的博客 1168

MagicDraw-用例图

MagicDraw-用例图

木头征的博客 3134

两数相除(简单实现)

题目 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例 : 输入: dividend = 10, divisor = 3 输出: 3 解释: 10/3 = truncate(3.33333…) = truncate(3)

weixin_43857345的博客 7699

全志T113s3主线linux开发(0)--基础准备

嵌入式Linux设备的启动大概是三步:1)启动芯片+内存:常见的是Uboot,不过全志的Uboot主线对SPI NAND 不太友好,用TF卡就方便。对于T113S芯片,推荐使用Awboot,简陋但快速。开发阶段用这个就方便好多,对SPINAND支持也方便。2)启动linux内核:主线内核以下通篇都用6.13以上的内核。对比tina5.0还在用5.4 ,主要是性能、安全上有变化。6.0以上内核在devicetree的编写具体格式上有了变化,网上大量tina5.0和5.4内核的编写方式不适用。

2301_79234138的博客 2249

STM32L452与FPGA通信翻车?手把手教你关闭I2C时钟延展避坑(附OVR错误解决方案)

本文深入解析STM32L452与FPGA在I2C通信中因时钟延展功能导致的常见问题,提供关闭I2C时钟延展的详细配置方法(NOSTRETCH模式),并针对可能出现的OVR错误给出Combined模式解决方案。通过实战案例和波形分析,帮助工程师快速排查和解决嵌入式系统中的I2C兼容性问题。

e3f4g5的博客 216

算法 两数相除

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/

qq_46859110的博客 411

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

29题:Java实现两数相除

题目要求不能用除法,不过我们处理溢出情况的写法,后面还是要用到的,尤其是 (long) dividend 这个强转的处理,其实就考察了基本数据类型的转换问题,包括最后返回的 (int) result,都是很细节的问题,但却很重要。很遗憾,前 5 个测试用例都是可以顺利通过的,但最后 1 个测试用例耗时会特别长,因为要计算 2147483648 / 1次,这个数太大了,所以我们要想办法优化一下。在数学中,加法是加减乘除的基础,减法是加法的逆运算,乘法是加法的倍增,除法是乘法的逆运算。

qq_64948664的博客 2876

突破Cloudflare 5秒盾!Python爬虫+GPT分析JS混淆实战(附完整代码)

这篇文章的核心观点其实不是“怎么过CF”,而是如何把LLM嵌入逆向工程的工作流。AI不会取代逆向工程师,但它正在重新定义逆向工程师的工作方式。过去我们80%的时间花在读懂混淆代码上,现在这部分可以外包给GPT,我们把精力集中在架构判断、异常处理和系统设计这些真正需要人类直觉的地方。技术会变,CF的防护会升级,GPT的能力也会迭代。但这种“人机协作拆解复杂问题”的方法论,比任何具体的绕过技巧都更有长期价值。参考资料Cloudflare Bot Management官方文档。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 542

【BlueDroid】【BLE】低功耗蓝牙客户端和服务端开发流程解析(超详细)

1. 精讲):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论2. 欢迎大家关注和订阅,和专栏会持续更新中.....敬请期待!

风云说通信 1927

Leetcode 23.两数相除

一、信息给你两个整数,被除数dividend和除数divisor。将两数相除,要求乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345将被截断为8-2.7335将被截断至-2。返回被除数dividend除以除数divisor得到的。假设我们的环境只能存储有符号整数,其数值范围是。本题中,如果商231 − 1,则返回231 − 1;如果商-231,则返回-231。310/3 = 3.33333.. ,向零截断后得到 3。-2。

tang7mj的博客 789

【RT-DETR涨点改进】独家注意力改进篇 | 手把手教你在RT-DETR上使用LSKAttention大核注意力机制(助力目标检测极限涨点)含多种创新改进点

本文提出了一种LSKA大核注意力机制优化RT-DETR模型的方法。LSKA通过将2D深度卷积核分解为级联的1D水平和垂直核,显著降低了计算复杂度和内存占用,尤其在处理大卷积核时优势明显。该模块在图像分类、目标检测等视觉任务中保持与LKA相当的性能,同时展现出更强的鲁棒性。文章详细介绍了LSKA的网络结构、核心代码实现方法,并提供了多种RT-DETR改进方案,包括rtdetr-r18-LSKA、rtdetr-l-LSKA等7种yaml配置文件,通过实验验证了该方法的有效性。

Ai缝合怪、助力小伙伴高效发论文 253

LeetCode29-两数相除

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

lyd1995的博客 328

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

leetcode 29.两数相除

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

EngineerHe的博客 1684

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【LeetCode 题解】算法:29.两数相除

在算法的世界里,常常会出现一些打破常规、挑战思维的题目。LeetCode 第 29 题 “两数相除” 便是其中之一。这道题不仅要求我们在不能使用乘法、除法和取余运算的前提下实现两数相除,还需要处理 32 位有符号整数的溢出问题,对编程者的逻辑思维和代码实现能力提出了较高要求。接下来,就让我们一起剖析这道题的解题思路和实现方法。​。

小高的博客 783

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode 29-两数相除

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

weizui0401的博客 226

LeetCode 29 两数相除

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

Ailecccc的博客 147

Leetcode 29 两数相除

Leetcode29 两数相除 原题地址:https://leetcode-cn.com/problems/divide-two-integers/ 题目描述: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 输入: dividend = 10, d...

隔壁家的二大爷 259

leetcode29(c++):两数相除

题目: 给定两个整数,两数相除但不能用乘法、除法和mod运算符。 且: 被除数和除数均为 32 位有符号整数。 除数不为 0。 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231-2^{31}−231, 2312^{31}231 − 1]。本题中,如果除法结果溢出,则返回 2312^{31}231 − 1。 思路 简单来说,这题就是要求被除数中能分出多少个除数出来。 那么这...

追 761

LeetCode-29-两数相除

LeetCode-29-两数相除 /*两数相除*/ #include<iostream> #include<math.h> using namespace std; int main(){ int dd, ds;//dd是被除数,ds是除数 long long res, s;//s为商 int flag = 0;//判断正负 cin >> dd >...

jindayue的博客 203

leetcode 29. 两数相除

''' leetcode 29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 ''' class Solution: def divide(self, dividend: int, divisor: int) -> int: ...

WYXHAHAHA123的博客 174

leetcode29. 两数相除-medium

注意:假设我们的环境只能存储 32 位 有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果商 严格大于 231 − 1 ,则返回 231 − 1;如果商 严格小于 -231 ,则返回 -231。例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2。这道题如果完全按照题目要求还是挺麻烦的,因为计算过程中很容易就溢出了,所以要额外增加很多判断。,向零截断后得到 -2。,向零截断后得到 3。输入: dividend = 7, divisor = -3。

weixin_37253733的博客 1173

【LeetCode】29、两数相除

整数包括始终数据类型,他有正负号与数值表示范围整数遵循四则运算法则,超过数值范围会导致数值溢出暴力解法采用被除数不断减去除数的次数,直到被除数小于除数折半解法采用两层while循环,每次减少被除数的一半,采用位移方式减出除数的2的倍数。

Tim_10的博客 404

Leetcode29. 两数相除

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

会流泪de鱼的博客 182

leetcode算法整理29两数相除

LEETCODE注解 29:两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 说明: 被除数和除数均为 32 位有符号整数。 除数不为 0。 假设我们的环境只能存储 32 位有符号整数,其数值范围是int [min, max]。 本题中,如果除法结果溢...

qq_39502383的博客 182
上一篇: 28. 实现 strStr()
下一篇: 33. 搜索旋转排序数组
念殊15
博客等级 码龄8年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值