力扣(LeetCode)29. 两数相除(C++)

news2025/1/17 8:55:05

快速乘

题解只使用了 i n t int int
万恶的 I N T _ M I N INT\_MIN INT_MIN,怎么处理?打不过就加入——被除数和除数转为负数计算 。


x x x 除以 y y y ,等于从 x x x 中拿出若干个 y y y 。 从 x x x 中拿出 y y y 的数量,就是 x ÷ y x\div y x÷y 的商。

y y y 的数量 , 用状态压缩表示。 即 2 0 / 2 1 / 2 2 … / 2 31 2^0/2^1/2^2\dots/2^{31} 20/21/22/231 32 32 32 位数可以组成 0 0 0 ~ 2 31 2^{31} 231 之间任意的数 。 这么多 y y y 相加足以超过任何整形数,可以“数”出商。

我们预处理的是 y × 数 量 ( y ) y\times 数量(y) y×(y) , 具体实现类似快速幂 。

class Solution {
public:
    int divide(int x, int y) {
        if(INT_MIN == x){//两个特例
            if(-1==y) return INT_MAX;
            if(1==y) return INT_MIN;
        }
        bool is_minus = false;
        if(x>0&&y<0||x<0&&y>0) is_minus = true;
        if(x>0) x = -x;
        if(y>0) y = -y;
        vector<int> exp;
        int i ;
        for(i = y; i>=x&&i>=INT_MIN/2;i+=i) exp.push_back(i);
        if(i<INT_MIN/2) exp.push_back(i);
        int ans = 0;
        for(int i = exp.size()-1;i>=0;i--){
            if(x<=exp[i]){
                x-=exp[i];
                ans -= 1<<i;
            }
        }
        if(!is_minus) ans = -ans;
        return ans;
    }
};
  1. 时间复杂度 : O ( l o g x ) O(logx) O(logx) , 预处理快速乘的时间复杂度 O ( l o g 2 x y ) O(log_2\dfrac{x}{y}) O(log2yx) ,求商的时间复杂度 O ( l o g 2 x y ) O(log_2\dfrac{x}{y}) O(log2yx) ,总时间复杂度 O ( 2 × l o g 2 x y ) O(2\times log_2\dfrac{x}{y}) O(2×log2yx) ,不妨忽略常数,时间复杂度 O ( l o g x ) O(logx) O(logx)
  2. 空间复杂度 : O ( l o g x ) O(logx) O(logx) , 预处理快速乘的空间复杂度 O ( l o g 2 x y ) O(log_2\dfrac{x}{y}) O(log2yx)

博主致语

理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。

AC

AC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Allegro差分自动添加回流地孔操作指导

Allegro差分自动添加回流地孔操作指导 Allegro自带给差分添加回流地孔的功能,具体操作如下 点击connect命令,任意拉一对差分 鼠标右击,选择Return Path。。。,选择settings 会弹出设置的对话框,Assign net name给孔分配一个网络,一般是GND, Return Path via 选择添加…

2019年1+X 证书 Web 前端开发中级理论考试题目原题+答案——第五套

&#x1f4da;文章目录 &#x1f3af;关于1X标准 &#x1f3af;关于中级考点 ⏩&#x1f4bb;答案速查 理论题(满分100分)&#xff0c;包括单选题、多选题、判断题。 &#x1f4d1;一、单选题&#xff08;每小题2分&#xff0c;共30小题&#xff0c;共60分&#xff09; &…

Docker的基础命令

1.查找可用的镜像 docker search 镜像名 例&#xff1a;docker search nginxdocker search mysql2.拉取官方镜像&#xff08;及下载镜像&#xff09; docker pull 镜像名:标签例&#xff1a;docker pull nginx #表示现在最新版本的nginx镜像docker pull nginx:1.14…

使用frida发送微信消息给好友

前言 之前说过怎么用python来发送微信文本消息&#xff0c;原理大概就是构造内存机器码。其实frida也可以做类似操作&#xff0c;构造数据和机器码&#xff0c;然后调用。我就不重复操作了&#xff0c;这里说下另一种方法。 想使用frida来发送消息这个想法很早之前就有了&…

SQLlite

SQLlite ​ SQLite是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 一、什么是 SQLite ​ SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&…

Webpack 5 超详细解读(三)

21.babel-loader 使用 使用babel-loader对js文件进行处理&#xff0c;在lg.Webpack.js配置文件中配置js文件规则。 使用单独的插件进行转换 使用预设进行转换 使用babel.config.js配置文件进行babel配置 const path require(path) const CopyWebpackPlugin require(copy-W…

解决哈希冲突的方案

什么是哈希表 一种实现关联数组抽象数据类型的数据结构&#xff0c;这种结构可以将关键码映射到给定值。简单来说哈希表&#xff08;key-value&#xff09;之间存在一个映射关系&#xff0c;是键值对的关系&#xff0c;一个键对应一个值。 什么是哈希冲突 当两个不同的数经过…

基于 Text-CNN 的情感分析(文本分类)----概念与应用

文章目录基于Text-CNN情感分析卷积的基本概念Text-CNN的核心思想实现数据预处理批量处理操作--填充与截断拆分训练集与测试集定义Text-CNN模型设计模型定义与训练参数训练并评估模型结语基于Text-CNN情感分析 大家都知道&#xff0c;CNN(Convolutional Neural Network) 是深度…

非近轴衍射分束器的设计与严格分析

摘要 直接设计非近轴衍射分束器仍然是很困难的。由于有相对较大的分束角&#xff0c;元件的特征尺寸一般等于或小于工作波长。因此&#xff0c;它通常超出近轴建模方法的范围。在此示例中&#xff0c;将迭代傅里叶变换算法&#xff08;IFTA&#xff09;和薄元件近似&#xff08…

在线的MySQL数据库表结构对比工具

在项目部署上线前&#xff0c;测试版和正式版的数据库表结构做过哪些变更&#xff0c;如果没有做好实时记录&#xff0c;那么就需要对比找出差异&#xff0c;否则代码部分更新后&#xff0c;可能导致功能异常。 数据库表结构对比的工具很多&#xff0c;但是为了方便部署同步的…

Python 算法:线性回归及相关公式推导

0 前言 本文以一个小小的案例展开&#xff0c;主要讲解了线性回归的步骤、常用的两种求最优解的方法&#xff08;最小二乘法和sklearn回归算法及算法原理&#xff09;及相关函数、公式的过程推导。 相关环境&#xff1a;Windows 64位 Python3.9 scikit-learn1.0.2pandas1.4.2…

怎么在VMware上安装Linux?

推荐教程&#xff1a;Linux零基础快速入门到精通 下载CentOS操作系统 首先&#xff0c;我们需要下载操作系统的安装文件&#xff0c;本次使用CentOS7.6版本进行学习&#xff1a; https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的/不要漏掉&#xff09; •或者直接…

02、Spring中的Bean实例化、作用域、生命周期及装配方式介绍

简介&#xff1a;本笔记主要介绍以下几点 1、Bean的常见属性及其子元素 2、实例化Bean的三种方式 3、Bean的生命周期和作用域 4、Bean的三种装配方式 1、Bean的配置 Spring简单来说就是一个大工厂&#xff0c;这个工厂负责创建和管理Spring容器中的Bean对象&#xff0c;如果要使…

基于深度学习的人脸表情识别的AR川剧变脸(一)

1、摘要 本项目分为两部分&#xff0c;第一个部分是人脸表情识别任务&#xff0c;第二部分是根据表情变化不同AR脸谱效果。 本文将第一部分&#xff0c;如何使用Keras训练一个人脸表情识别的卷积神经网络。 2、数据集处理 数据集我们使用FER2013PLUS人脸表情识别数据集&…

Spring Boot如何进行监控项目/SpringBoot Admin监控程序怎么用/监控程序可以监控到哪些信息

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.6 监控 3.6.1 意义 监控服务是否宕机监控服务运…

Hive数据定义语言-DDL-入门基础(含四个实践案例)

1. 概述 数据定义语言DDL&#xff0c;是SQL语言集中对数据库内部的对象结构进行创建、删除、修改等的操作语言&#xff0c;这些数据库对象包括database、table、view、index等。DDL核心语法由CREATE、ALTER与DROP三个所组成。DDL并不涉及表内部数据的操作。在某些上下文中&…

Docker ENV 与 ARG 详解

Docker Env 与 ARG 详解 Env 与ARG 差异可以用下面一张图来表示 ENV 使用说明 ENV 变量只能在容器运行时&#xff0c;生效 如果想在执行命令的时候&#xff0c;使用ENV变量需要在shell 模式下采用生效&#xff0c;比如我们运行spring boot 应用, 其中JAVA_OPTS 变量通过doc…

德国跨国汽车巨头大陆集团遭LockBit勒索软件组织攻击

据BleepingCompuer11月3日消息&#xff0c;知名勒索软件组织LockBit宣布他们对德国跨国汽车集团大陆集团&#xff08; Continental&#xff09; 发动了网络攻击。 LockBit声称&#xff0c;他们窃取了大陆集团系统中的一些数据&#xff0c;如果不能在11 月 4 日 15:45:36&#x…

Docker基本管理

一、Docker概述 1.什么是Docker 是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源&#xff1b; 是在Linux容器里运行应用的开源工具&#xff1b; 是一种轻量级的“虚拟机”&#xff1b; Docker的容器技术可以在一台主机上轻松为任何应用创建一个…

GC暂停时间过长——排查分析

告警 本次GC日志分析 2022-11-17T17:58:50.5180800: 1217960.132: [GC (Allocation Failure) 2022-11-17T17:58:50.5180800: 1217960.132: [ParNew: 1382400K->153600K(1382400K), 0. 5626158 secs] 3419277K->2410488K(4040704K), 0.5628652 secs] [Times: user1.07 sy…