IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 剑指offer-整数除法思路及代码 -> 正文阅读

[数据结构与算法]剑指offer-整数除法思路及代码

剑指offer-整数除法思路及代码

用于记录自己刷题的思路,也希望能帮助到大家。

问题描述

给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。

重点剖析

  1. 需要考虑时间复杂度的问题;
  2. 需要对整数的范围较为熟悉。此处简单回顾一下,Java中有四种不同的整数类型,分别为8位的byte类型(-27-27-1),16位的short类型(-215-215-1),32位的int类型(-231-231-1)和64位的long类型(-263-263-1).

思路分析

  1. 题目提示不能使用乘号、除号和求余符号,所以要想到用减法,用除数循环减去被除数,直到不能减之后共循环多少次就是要得到的结果;
  2. 上面的解法有个问题就是当除数很大而被除数很小时,这个过程就会执行很多次,那这种解法的时间复杂度就是O(n),所以我们要优化解法;
  3. 我们可以调整解法为当除数大于被除数时可以继续判断除数是否大于被除数的2倍,如是则继续判断是否大于被除数4倍以此类推,当不大于时记录此时的倍数,先减去被除数的该被数,继续上面的过程;
  4. 这里还是需要考虑异常情况,做异常情况的特殊处理。首先需要考虑正负数的问题,考虑到正整数的范围是-231-231-1,所以将负数转为正数可能存在越界的问题,所以同意采用将正数转为负数来处理;另外一个方面,当进行-231/-1时也会存在溢出的问题,所以对这种情况需要特殊处理。

代码

在这里插入代码片
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:10:50  更:2021-09-01 12:12:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:22:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码