劍指offer面試題15?給定兩個整數 a 和 b ,求它們的除法的商 a/b ,要求不得使用乘号 '*'、除号 '/' 以及求餘符号 '%' ,今天小編就來說說關于劍指offer面試題15?下面更多詳細答案一起來看看吧!
給定兩個整數 a 和 b ,求它們的除法的商 a/b ,要求不得使用乘号 '*'、除号 '/' 以及求餘符号 '%' 。
注意:整數除法的結果應當截去(truncate)其小數部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
假設我們的環境隻能存儲 32 位有符号整數,其數值範圍是 [−231, 231−1]。本題中,如果除法結果溢出,則返回 231 − 1
示例 1:輸入:a = 15, b = 2 輸出:7
解釋:15/2 = truncate(7.5) = 7
示例 2:輸入:a = 7, b = -3 輸出:-2
解釋:7/-3 = truncate(-2.33333..) = -2
示例 3:輸入:a = 0, b = 1 輸出:0
示例 4:輸入:a = 1, b = 1 輸出:1
提示:-231 <= a, b <= 231 - 1
b != 0
注意:本題與主站 29 題相同
解題思路分析1、遍曆;時間複雜度O(log(n)),空間複雜度O(1)
func divide(a int, b int) int {
if b == 0 || a == 0 {
return 0
}
if b == 1 {
return a
}
flag, count := 1, 1
if a < 0 {
flag = -flag
a = -a
}
if b < 0 {
flag = -flag
b = -b
}
x, y, z := a, b, 0
temp := y
for x-y >= 0 {
for x-y >= 0 {
x = x - y
z = z count
y = y y
count = count count
}
y = temp
count = 1
}
if z > math.MaxInt32 {
return math.MaxInt32
}
if flag < 0 {
return -z
}
return z
}
2、計算;時間複雜度O(1),空間複雜度O(1)
func divide(a int, b int) int {
res := a / b
if res > math.MaxInt32 {
return math.MaxInt32
}
return res
}
Easy題目,題目同leetcode 29.兩數相除
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!