当前位置: 首页 > news >正文

swift leetcode-29 Divide Two Integers

题目链接:https://leetcode.com/problems/divide-two-integers/description/

题意:

  • 给定连个整数,分别为dividend divisor,不使用乘除和mod运算求商
  • 两个整数都被标记为32位
  • 如果溢出则返回2^32 - 1

思路:

上来很懵逼,后来看了道长的思路,swift的bitwise operator的<<>>来实现整体的位移

利用位移,将 divisor翻倍,直到比 dividentd大,得出位移次数 temp,然后相减得出下一次循环的 dividend。通过 1<<(temp-1)得出十进制倍数

Solution

class Solution {
    func divide(_ dividend: Int, _ divisor: Int) -> Int {
        if divisor == 0 || (dividend == Int(Int32.min) && divisor == -1){
            return Int(Int32.max)
        }
        
        let isNagtive = (dividend < 0) != (divisor < 0)
        var dividend = abs(dividend)
        var divisor = abs(divisor)
        var temp = 0
        var count = 0
        while dividend >= divisor{
            var divisortemp = divisor
            temp = 0
            while dividend >= (divisortemp << temp){
                temp += 1
            }
            dividend -= divisor << (temp - 1)
            count += 1 << (temp - 1)
        }
        return isNagtive ? -count : count
    }
    
}



复制代码

转载于:https://juejin.im/post/5b46d5f0f265da0f900e020a

相关文章:

  • 后端程序员必备的Linux基础知识
  • Linux服务器后台运行jar包
  • 统计学习方法概论(综合数据挖掘概论)
  • Postfix+dovecot邮件
  • App Icon Gear App 图标制作工具
  • 前端容灾
  • 学习 服务器部署 hello world
  • Java 基础 之 位运算
  • java泛型使用
  • 【RocksDB】TransactionDB源码分析
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 2-快速填充单元格
  • Linux学习笔记之文件系统
  • 所谓死锁
  • Linux下函数调用堆栈帧的详细解释【转】
  • 07.Android之多媒体问题
  • Java IO学习笔记一
  • js继承的实现方法
  • Just for fun——迅速写完快速排序
  • Laravel核心解读--Facades
  • leetcode46 Permutation 排列组合
  • mysql innodb 索引使用指南
  • Redux系列x:源码分析
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 订阅Forge Viewer所有的事件
  • 高程读书笔记 第六章 面向对象程序设计
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 自制字幕遮挡器
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (1)(1.11) SiK Radio v2(一)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (四)模仿学习-完成后台管理页面查询
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (译)2019年前端性能优化清单 — 下篇
  • .NET 8.0 发布到 IIS
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 服务 ServiceController
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • @Async注解的坑,小心
  • @Autowired注解的实现原理
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [Android]Tool-Systrace
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [CSS3备忘] transform animation 等
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [FC][常见Mapper IRQ研究]