广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中怎么利用LeetCode实现两数相除
  • 926
分享到

C++中怎么利用LeetCode实现两数相除

2023-06-20 15:06:59 926人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关c++中怎么利用LeetCode实现两数相除,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。[LeetCode] 29. Divide Two Integers 两

这篇文章将为大家详细讲解有关c++中怎么利用LeetCode实现两数相除,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

[LeetCode] 29. Divide Two Integers 两数相除

Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.

Return the quotient after dividing dividend by divisor.

The integer division should truncate toward zero.

Example 1:

Input: dividend = 10, divisor = 3
Output: 3

Example 2:

Input: dividend = 7, divisor = -3
Output: -2

Note:

  • Both dividend and divisor will be 32-bit signed integers.

  • The divisor will never be 0.

  • Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 231 − 1 when the division result overflows.

这道题让我们求两数相除,而且规定不能用乘法,除法和取余操作,那么这里可以用另一神器位操作 Bit Manipulation,思路是,如果被除数大于或等于除数,则进行如下循环,定义变量t等于除数,定义计数p,当t的两倍小于等于被除数时,进行如下循环,t扩大一倍,p扩大一倍,然后更新 res 和m。这道题的 OJ 给的一些 test case 非常的讨厌,因为输入的都是 int 型,比如被除数是 -2147483648,在 int 范围内,当除数是  -1 时,结果就超出了 int 范围,需要返回 INT_MAX,所以对于这种情况就在开始用 if 判定,将其和除数为0的情况放一起判定,返回 INT_MAX。然后还要根据被除数和除数的正负来确定返回值的正负,这里采用长整型 long 来完成所有的计算,最后返回值乘以符号即可,代码如下:

解法一:

class Solution {public:    int divide(int dividend, int divisor) {        if (dividend == INT_MIN && divisor == -1) return INT_MAX;        long m = labs(dividend), n = labs(divisor), res = 0;        int sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1;        if (n == 1) return sign == 1 ? m : -m;        while (m >= n) {            long t = n, p = 1;            while (m >= (t << 1)) {                t <<= 1;                p <<= 1;            }            res += p;            m -= t;        }        return sign == 1 ? res : -res;    }};

我们可以通过递归的方法来解使上面的解法变得更加简洁:

解法二:

class Solution {public:    int divide(int dividend, int divisor) {        long m = labs(dividend), n = labs(divisor), res = 0;        if (m < n) return 0;        long t = n, p = 1;        while (m > (t << 1)) {            t <<= 1;            p <<= 1;        }        res += p + divide(m - t, n);        if ((dividend < 0) ^ (divisor < 0)) res = -res;        return res > INT_MAX ? INT_MAX : res;    }};

关于C++中怎么利用LeetCode实现两数相除就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C++中怎么利用LeetCode实现两数相除

本文链接: https://www.lsjlt.com/news/297999.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中怎么利用LeetCode实现两数相除
    这篇文章将为大家详细讲解有关C++中怎么利用LeetCode实现两数相除,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。[LeetCode] 29. Divide Two Integers 两...
    99+
    2023-06-20
  • C++实现LeetCode(29.两数相除)
    [LeetCode] 29. Divide Two Integers 两数相除 Given two integers dividend and divi...
    99+
    2022-11-12
  • C语言怎么实现两数相除
    本篇内容介绍了“C语言怎么实现两数相除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两数相除,如果有余数,输出余数。实例#include &...
    99+
    2023-06-17
  • C++如何实现两数相除
    本篇内容介绍了“C++如何实现两数相除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Divide Two Integers 两数相除Give...
    99+
    2023-06-19
  • C++实现LeetCode(2.两个数字相加)
    [LeetCode] 2. Add Two Numbers 两个数字相加 You are given two non-empty linked lists rep...
    99+
    2022-11-12
  • C++如何实现LeetCode两个数字相加
    这篇文章将为大家详细讲解有关C++如何实现LeetCode两个数字相加,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 2. Add Two Numbers 两个数字相加You are ...
    99+
    2023-06-20
  • C++中怎么利用LeetCode实现快乐数
    这篇文章给大家介绍C++中怎么利用LeetCode实现快乐数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。[LeetCode] 202.Happy Number 快乐数Write an algorithm to det...
    99+
    2023-06-20
  • php怎么实现两数相除取整
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php实现两数相除取整,可分成两个部分看:两数相除:可利用“/”运算符进行除法运算取整:可利用取整函数对除法运算的结果进行取整而PHP取整数函数常用的四种方法:直接取整...
    99+
    2018-10-30
    php 相除取整
  • C++中怎么利用LeetCode移除元素
    这篇文章给大家介绍C++中怎么利用LeetCode移除元素,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。[LeetCode] 27. Remove Element 移除元素Given an array num...
    99+
    2023-06-20
  • php怎么实现相除保留两位小数
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php实现相除保留两位小数,可分成两个部分看:两数相除:可利用“/”运算符进行除法运算保留两位小数:可利用number_format()或sprintf()函数对除法运...
    99+
    2021-10-24
    php 相除 保留两位小数
  • C++中怎么利用LeetCode移除链表元素
    今天就跟大家聊聊有关C++中怎么利用LeetCode移除链表元素,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。[LeetCode] 203.Remove Linked List El...
    99+
    2023-06-20
  • C语言怎么实现两个整数相加
    这篇文章主要介绍“C语言怎么实现两个整数相加”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言怎么实现两个整数相加”文章能帮助大家解决问题。使用 scanf() 来接收输入, printf() 与...
    99+
    2023-06-17
  • C++中怎么利用LeetCode删除链表的节点
    这期内容当中小编将会给大家带来有关C++中怎么利用LeetCode删除链表的节点,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。[LeetCode] 237.Delete Node in a Linked ...
    99+
    2023-06-20
  • C语言怎么实现两个浮点数相乘
    本篇内容主要讲解“C语言怎么实现两个浮点数相乘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么实现两个浮点数相乘”吧!输入两个浮点数,计算乘积。实例#include <stdio....
    99+
    2023-06-17
  • C++实现LeetCode(两个有序数组的中位数)
    [LeetCode] 4. Median of Two Sorted Arrays 两个有序数组的中位数 There are two sorted arrays nums1...
    99+
    2022-11-12
  • Python怎么实现两数相加
    这篇文章主要讲解了“Python怎么实现两数相加”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现两数相加”吧!两数相加题目描述给出两个 非空 的链表用来表示两个非负的整数。...
    99+
    2023-06-02
  • C++中怎么利用LeetCode实现最多有两个不同字符的最长子串
    本篇文章给大家分享的是有关C++中怎么利用LeetCode实现最多有两个不同字符的最长子串,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。[LeetCode] 159. Long...
    99+
    2023-06-20
  • C++中怎么实现LeetCode
    今天就跟大家聊聊有关C++中怎么实现LeetCode,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。[LeetCode] 126. Word Ladder II 词语阶梯之二Given...
    99+
    2023-06-20
  • python怎么实现数组元素两两相加
    这篇“python怎么实现数组元素两两相加”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么实现数组元素两两相加...
    99+
    2023-06-30
  • php怎么实现两个数相乘
    这篇文章主要介绍“php怎么实现两个数相乘”,在日常操作中,相信很多人在php怎么实现两个数相乘问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么实现两个数相乘”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作