tft每日頭條

 > 圖文

 > 劍指offer面試題15

劍指offer面試題15

圖文 更新时间:2024-08-25 07:24:03

劍指offer面試題15?給定兩個整數 a 和 b ,求它們的除法的商 a/b ,要求不得使用乘号 '*'、除号 '/' 以及求餘符号 '%' ,今天小編就來說說關于劍指offer面試題15?下面更多詳細答案一起來看看吧!

劍指offer面試題15(劍指OfferII001.整數除法)1

劍指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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved