首页 > 其他分享 >29. 两数相除

29. 两数相除

时间:2022-11-05 14:00:56浏览次数:98  
标签:int res 29 VALUE 相除 long

29. 两数相除

题解:

  1. a / b = y 等价于 b > a - (b * y) > 0 , 只要求出减了多少次b就好了。
  2. 一个一个地减b,效率太低了,最坏情况下, a = 2^31 - 1 , b = 1 ,超时; 应该先预处理出 b * 2^k (最多不超过31个), 然后从大到小被 a减, b > a - 2^k *b - 2 ^(k-1) * b - ... - 2^0 * b > 0 , 然后就可以求出y了
  3. 符合和数值分开处理,注意 a = -2147483648(int 的最小值) b = -1 时, 会爆int
class Solution {
   public int divide(int x, int y) {
        List<Long> exp = new ArrayList<>();
        // 被除数和除数 异号
        boolean is_minus = false;
        if (x< 0 && y >0 || x > 0 && y < 0) is_minus = true;

        long a = Math.abs((long)x), b = Math.abs((long)y);
        // 初始化 2^0 * b 到 2^k * b 的数
        for(long i = b; i <= a; i = i + i) exp.add(i);
        long res = 0;
        for(int i = exp.size() - 1; i >= 0; i -- ) {
            if (a >= exp.get(i)) {
                a -= exp.get(i);
                res += 1L << i;
            }
        }
        if (is_minus) res = -res;
        if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) res = Integer.MAX_VALUE;
        return (int)res;
    }
}

标签:int,res,29,VALUE,相除,long
From: https://www.cnblogs.com/eiffelzero/p/16860061.html

相关文章

  • 【10.29-11.4】博客精彩回顾
    一、优秀文章推荐1.​​vue中引入高德地图Loca数据可视化​​2.​​SpringBoot自定义注解+异步+观察者模式实现业务日志保存​​​3.​​【原子样式实践】一次搞定微信开发......
  • 297个机器学习彩图知识点(2)
    导读本系列将持续更新297个机器学习的知识点,欢迎关注。1.类别特征2.链式求导3.卡方应用4.卡方5.分类6.训练7.混淆矩阵8.CP9.累计分布函数10.......
  • SQL SERVER 中 sys.dm_tran_locks 消息 297,级别 16,状态 1,第 6 行 用户没有执行此操
     SQLSERVER中 sys.dm_tran_locks 消息297,级别16,状态1,第6行用户没有执行此操作的权限。--1.查询数据库阻塞与死锁的进程清单(可分析清单详情,看看死锁id对应的......
  • 一个29+前端2022年年中总结(负债,当爹,找工作)
    作为一个29岁的前端,2022年对我来说总的还是一句话:不管生活多糟糕,日子还是得过的。买房计划自从经历过房东让连夜搬家的事情后,买房的打算就提上日程了。我和老婆两个也算行动......
  • 291 蒙德里安的梦想
    f[i][j]表示第i列有来自上一列的j(用二进制表示有几行就有几位,1表示突起,0表示没有突起)的突起时有几种摆放方式在确定几行几列的图之后,先预处理st数组,这个数组是确定每一列......
  • Linux c 开发-29 mosquitto库保持连接的两种方式
    方式1while(1){intrc=mosquitto_loop(mosq,-1,1);if(rc){printf("mqtt_portal:mosquitto_looprc=%d\n",rc);......
  • acwing298 围栏
    有 NN 块木板从左到右排成一行,有 MM 个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。第 ii 个木匠要么不粉刷,要么粉刷包含木板 Si 的,长度不超过 Li 的连续的......
  • CF1729G Cut Substrings 题解
    CF1729GCutSubstrings给出两个字符串\(s,t\),每次可以将字符串\(s\)中任意一个为\(t\)的子串删除,删除位置的字符变为空格(或理解为无实义)。求最少删除几次可以使得......
  • 力扣 129. 求根节点到叶节点数字之和
    129.求根节点到叶节点数字之和给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例......
  • 基于单片机的温湿度串口监控系统设计(#0429)
    温湿度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉大概,传统的指针式的温度计只能指示温度,但是精度低,显示不够直观,本系统可以数字化显示温......