Divide two integers without using multiplication, division and mod operator.html
If it is overflow, return MAX_INT.swift
class Solution { func divide(_ dividend: Int, _ divisor: Int) -> Int { let max = Int(Int32.max) if divisor == 0 || (dividend == Int(Int32.min) && divisor == -1) { return max } let positive = (dividend < 0) == (divisor < 0) var a = abs(dividend) let b = abs(divisor) var r = 0 while a >= b { var accumulateB = b var toAdd = 1 while a >= accumulateB { a -= accumulateB r += toAdd accumulateB <<= 1 // accumulateB += accumulateB toAdd <<= 1 // toAdd += toAdd } } return positive ? r : -r } }
轉載請註明出處:http://www.cnblogs.com/silence-cnblogs/p/7067196.htmlapp