File tree 2 files changed +55
-0
lines changed
lcof2/剑指 Offer II 001. 整数除法
2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change @@ -268,6 +268,36 @@ public class Solution {
268
268
}
269
269
```
270
270
271
+ #### Swift
272
+
273
+ ``` swift
274
+ class Solution {
275
+ func divide (_ a : Int , _ b : Int ) -> Int {
276
+ if b == 1 {
277
+ return a
278
+ }
279
+ if a == Int32 .min && b == -1 {
280
+ return Int (Int32 .max )
281
+ }
282
+ let sign = (a > 0 && b > 0 ) || (a < 0 && b < 0 )
283
+ var a = a > 0 ? - a : a
284
+ let b = b > 0 ? - b : b
285
+ var ans = 0
286
+ while a <= b {
287
+ var x = b
288
+ var cnt = 1
289
+ while x >= (Int32 .min >> 1 ) && a <= (x << 1 ) {
290
+ x <<= 1
291
+ cnt <<= 1
292
+ }
293
+ ans += cnt
294
+ a -= x
295
+ }
296
+ return sign ? ans : - ans
297
+ }
298
+ }
299
+ ```
300
+
271
301
<!-- tabs: end -->
272
302
273
303
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func divide( _ a: Int , _ b: Int ) -> Int {
3
+ if b == 1 {
4
+ return a
5
+ }
6
+ if a == Int32 . min && b == - 1 {
7
+ return Int ( Int32 . max)
8
+ }
9
+ let sign = ( a > 0 && b > 0 ) || ( a < 0 && b < 0 )
10
+ var a = a > 0 ? - a : a
11
+ let b = b > 0 ? - b : b
12
+ var ans = 0
13
+ while a <= b {
14
+ var x = b
15
+ var cnt = 1
16
+ while x >= ( Int32 . min >> 1 ) && a <= ( x << 1 ) {
17
+ x <<= 1
18
+ cnt <<= 1
19
+ }
20
+ ans += cnt
21
+ a -= x
22
+ }
23
+ return sign ? ans : - ans
24
+ }
25
+ }
You can’t perform that action at this time.
0 commit comments