MCPcopy Create free account
hub / github.com/Ainevsia/Leetcode-Rust / divide

Method divide

29. Divide Two Integers/src/main.rs:11–30  ·  view source on GitHub ↗
(dividend: i32, divisor: i32)

Source from the content-addressed store, hash-verified

9
10impl Solution {
11 pub fn divide(dividend: i32, divisor: i32) -> i32 {
12 // deal with the only overflow case
13 if dividend == i32::min_value() && divisor == -1
14 { return i32::max_value() }
15 let mut dvd = i64::abs(dividend as i64);
16 let dvs = i64::abs(divisor as i64);
17 let sign: i64 = if (dividend > 0) ^ (divisor > 0) { -1 } else { 1 };
18 let mut ans = 0;
19 while dvd >= dvs {
20 let mut tmp = dvs;
21 let mut shift: i64 = 1;
22 while dvd >= (tmp << 1) {
23 tmp <<= 1;
24 shift <<= 1;
25 }
26 dvd -= tmp;
27 ans += shift;
28 }
29 (sign * ans) as i32
30 }
31}
32
33#[cfg(test)]

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected