LCR 001. 两数相除
剑指Offer通关
力扣搜索LCR即为剑指Offer的所有题目。
LCR 001. 两数相除
快速乘
解析:
题目规定只能用32位整数,所以取值范围在-2^31 ~ 2^31 - 1 之间。这里的特殊情况为什么不考虑被除数和除数为最大值?因为后面会将所有的数都转为负数,所以考虑复数的最小值就是在考虑最大值。后面都转为负数了,就和正常的一样了。先考虑所有的特殊情况- 如果被除数为最小值-2^31:- 如果除数为1,则商为最小值-2^31- 如果除数为-1,则商为2^31, 此时溢出,所以应该返回2^31 - 1- 如果除数为最小值-2^31:- 如果被除数为最小值-2^31,那么商为1- 如果被除数为其他值,商为0其余情况,会有除数为正负、被除数为正负四种情况,处理起来比较麻烦。所以考虑将他们全转为正数或负数。这里考虑当有值为-2^31时,转为正数会变成2^31溢出,所以需要全转为负数(实际和全为正数是一样的。)再往后就是正常情况。设被除数为X 除数为Y 且X Y均为负数,商为Z,则满足Y * Z <= X <= Y * (Z + 1)所以可以在0-MAX之间二分Z,得到满足Y * Z <= X 的最大的Z。由于不能用除法,所以二分在找mid时是left + (right - left) >> 1 实现的。而且需要计算Y * Z的值,这里也不能用乘法,所以需要用到快速乘的方法。
class Solution {public int divide(int a, int b) {if(a == Integer.MIN_VALUE){if(b == 1) return Integer.MIN_VALUE;else if(b == -1) return Integer.MAX_VALUE;}if(b == Integer.MIN_VALUE){if(a == Integer.MIN_VALUE) return 1;else return 0;}boolean rev = false;if(a > 0){a = -a;rev = !rev;}if(b > 0){b = -b;rev = !rev;}int l = 1, r = Integer.MAX_VALUE, ans=0;while(l <= r){int mid = l + ((r-l) >> 1);if(quickAdd(b, mid, a)){ //小于等于ans = mid;// 注意溢出if (mid == Integer.MAX_VALUE) {break;}l = mid + 1;}else r = mid-1;// System.out.println("l=" + l + " r=" + r + " mid=" + mid);}return rev ? -ans : ans; //如果需要取反就取反}// 快速乘public static boolean quickAdd(int y, int z, int x) {// x 和 y 是负数,z 是正数// 需要判断 z * y >= x 是否成立int result = 0, add = y;while (z != 0) {if ((z & 1) != 0) {// 需要保证 result + add >= xif (result < x - add) {return false;}result += add;}if (z != 1) {// 需要保证 add + add >= xif (add < x - add) {return false;}add += add;}// 不能使用除法z >>= 1;}return true;}
}
相关文章:
LCR 001. 两数相除
剑指Offer通关 力扣搜索LCR即为剑指Offer的所有题目。 LCR 001. 两数相除 快速乘 解析: 题目规定只能用32位整数,所以取值范围在-2^31 ~ 2^31 - 1 之间。这里的特殊情况为什么不考虑被除数和除数为最大值?因为后面会将所有的数都转为负数…...
LeCun和Bengio“吵”起来了,人工智能是“潘多拉魔盒”吗?
作者 | 谢年年 上周末,深度学习领域最有影响力的三巨头之二Yann LeCun和Yoshua Bengio就AI的潜在风险和安全问题引发了一场激烈辩论,人工智能是“潘多拉魔盒”吗?这场辩论引来众多AI知名人士围观。 LeCun在Facebook上发起了这场辩论ÿ…...
电子期刊制作宝典,让你成为专业行家
电子期刊作为一种新兴的媒体形式,越来越受到人们的喜爱。它不仅方便快捷,而且可以随时随地阅读,不受时间和空间的限制。那么,如何制作一份高质量的电子期刊呢? 1.首先打开FLBOOK电子杂志平台 2.然后点击模板选择电子期…...
ESP32网络开发实例-Web显示传感器实时数据
Web显示传感器实时数据 文章目录 Web显示传感器实时数据1、软件准备2、硬件准备3、代码实现3.1 Web页面代码实现4.2 Web服务器代码实现本文将详细介绍如何使用ESP32在 Web 服务器上绘制传感器读数(温度、湿度和压力)。 ESP32 将托管一个网页,其中包含三个实时图表,每 30 秒…...
ARM Cortex-A9:裸机开发,点亮LED3
1.看原理图 外设板原理图 核心板原理图 2.在芯片手册中找到控制硬件的有效的特殊功能寄存器 选择0x1输出 GPX1DAT[0]->GPX1_0 0->1/0 3.编程 start.s Makefile复制到桌面 使用超级终端,连接串口 随便写一个 选择串口 配置串口 板子上电马上按enter…...
QT学习day2
一、思维导图 作业: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admi…...
214. Devu和鲜花
214. Devu和鲜花 - AcWing题库 如果每个盒子里的花的数量是无限的,用隔板法可以得出答案是 现在每个盒子中区的花数要满足n个条件 我们可以求答案的补集,用全部方案数减去补集方案数 每一个不符合条件的要求为,设为Bi 补集方案数为就成了…...
【C++初阶(三)引用与内联函数】
本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…...
RK3288 Android11 mini-pcie接口 4G模组EC200A适配(含自适应功能)
这里写目录标题 1、修改驱动内核配置①使能USBNET功能②使能 USB 串口 GSM、CDMA 驱动③使能 USB 的 CDC ACM模式④使能PPP功能 2、使用lsusb命令查看是否识别到usb接口的“EC200A”4G模组3、在drivers/usb/serial/option.c添加VID和PID信息①添加VID和PID定义②在option_ids 数…...
Windows安装Jenkins
JDK 11 以上 https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.20%2B8/OpenJDK11U-jdk_x64_windows_hotspot_11.0.20_8.msi https://www.jenkins.io/download/ 下载windows安装版本 授权用户administrator logon as services windows(server)安装…...
计算属性,侦听属性,方法区别及例子
计算属性、监听属性和方法都是Vue中的重要概念,但它们在功能和使用上有所不同: 计算属性:计算属性是基于依赖进行缓存的属性,可以根据其他数据动态计算得出。计算属性会根据依赖自动更新,但是只有在其所依赖的数据发生…...
Windows工业三防平板全功能NFC近距离感应一维/二维扫描
Windows系统工业三防平板电脑是一种在智慧工厂仓储物流、MES数采、车载设备、设备检测、自动化控制等领域广泛应用的先进设备。此外,它还在公共服务领域,如高速交通、物流运输、电力检测、公务执法、银行金融、船舶装备、户外勘测、建筑工程、汽车检测、…...
git远端协同开发、解决冲突、分支合并、gitlab使用、远程仓库回滚、为开源项目贡献代码、git工作流,git pull和git fetch,变基
协同开发 避免冲突 张三:改了 settings.py 第一行,提交了 李四:改了 settings.py 第二行,提交了 你也在改setting.py ,没有拉取代码,不知道他们提交了,动了第二行,但是跟李四代码不一样 你要…...
ims-go项目搭建
通过集成开发工具Goland创建项目 整合Gin框架,在终端中输入如下命令: go get -u github.com/gin-gonic/gin 整合Gorm,安装命令如下: go get -u gorm.io/gorm 安装sqlserver驱动,安装命令如下: go get -u…...
2022最新版-李宏毅机器学习深度学习课程-P26 Recurrent Neural Network
RNN 应用场景:填满信息 把每个单词表示成一个向量的方法:独热向量 还有其他方法,比如:Word hashing 单词哈希 输入:单词输出:该单词属于哪一类的概率分布 由于输入是文字序列,这就产生了一个问…...
【Qt控件之QButtonGroup】概述及使用
概述 QButtonGroup 类提供了一个容器来组织一组按钮部件。 QButtonGroup 提供了一个抽象容器,可以将按钮部件放置其中。它不提供此容器的可视表示(请参见 QGroupBox,用于容器部件),而是管理组中每个按钮的状态。 一个…...
【开源分享】基于Html开发的房贷计算器,模仿新浪财经
房贷计算器是一种房贷计算的在线计算Web应用,按用户选择的贷款类型、贷款金额、期限、利率可计算得出每月月供参考、支付利息、还款总额这些信息。本文模仿新浪财经开发的房贷计算器。 作品预览 https://fangdai.gitapp.cn 源码地址 https://github.com/geeeeeee…...
ftp文件上传缓慢问题
问题描述 某环境下,通过vsftp上传文件缓慢。 问题分析 这个问题是由于服务器DNS导致,如果在内网机器中,配置了公网的DNS或者其他不能链接的DNS,会导致上传缓慢。 解决方案 目前有两种解决方式,任选其一即可&#…...
【周末闲谈】VR新视界,“眼”见未来
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言虚拟现实(VR)技术虚拟现实技术的原理虚拟现实技术发…...
CSRF和XSS是什么?
CSRF(Cross-site request forgery):跨站请求伪造。 用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。 满足条件: (1)登录受信任网站A,并在本地生成Cook…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
