每日一题---29. 两数相除[力扣][Go]

简介: 每日一题---29. 两数相除[力扣][Go]

题目描述

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符

返回被除数 dividend 除以除数 divisor 得到的商。

整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2

解题代码

func divide(dividend int, divisor int) int {
  // 判断正负
  flag := (dividend > 0 && divisor > 0) || (dividend < 0 && divisor < 0)
  result := 0
  a := int(math.Abs(float64(dividend)))
  b := int(math.Abs(float64(divisor)))
    // 排除极端结果
  if a == 0 || a < b{
    return 0
  }
  if dividend == math.MaxInt32 && divisor == math.MinInt32 {
    return math.MaxInt32
  }
  if dividend == -2147483648 && divisor == -1 {
    return 2147483647
  }
  for i := 31; i >= 0; i-- {
    if a>>i >= b {
      result += 1<<i      // 将结果加 2 的 n 次方
      a -= b<<i           // 将被除数减去 2 的 n 次方与除数的积
    }
  }
  if flag {
    return result
  } else {
    return -result
  }
}

提交结果


相关文章
|
2月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
41 6
|
1月前
|
SQL 算法 数据挖掘
LeetCode 第四题:寻找两个正序数组的中位数 【4/1000 】【python + go】
LeetCode 第四题:寻找两个正序数组的中位数 【4/1000 】【python + go】
|
1月前
|
算法 Java Go
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
27 0
|
1月前
|
存储 算法 Java
【经典算法】LeetCode112. 路径总和(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode112. 路径总和(Java/C/Python3/Go实现含注释说明,Easy)
17 0
|
1月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
12 0
|
1月前
|
算法 Java Go
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
18 0
|
1月前
|
算法 Java 大数据
【经典算法】LeetCode 283. 移动零(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 283. 移动零(Java/C/Python3/Go实现含注释说明,Easy)
14 0
|
1月前
|
算法 Java Go
【经典算法】LeetCode 2两数相加(Java/C/Python3/Go实现含注释说明,中等)
【经典算法】LeetCode 2两数相加(Java/C/Python3/Go实现含注释说明,中等)
15 0
|
1月前
|
算法 Java Go
【经典算法】LeetCode 2739. 总行驶距离(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 2739. 总行驶距离(Java/C/Python3/Go实现含注释说明,Easy)
17 0
|
2月前
|
Go
[leetcode ~go]三数之和 M
[leetcode ~go]三数之和 M