commit 12ff2e0591e01073aa431336c4bf68a5f17f780e
parent 6e1bf767ac1093233560224713438056cc340402
Author: AndrewLockVI <andrewlaack1@gmail.com>
Date: Sun, 28 May 2023 12:27:20 -0500
Completed divide two integers using dart
Diffstat:
1 file changed, 56 insertions(+), 0 deletions(-)
diff --git a/divide-two-integers/divide-two-integers-V2.dart b/divide-two-integers/divide-two-integers-V2.dart
@@ -0,0 +1,56 @@
+//Given two integer inputs return the value of them divided
+//by each other. To do this you are supposed to not use * / or %.
+//Given this first I used recursion but it was too slow so I then
+//went iterative with my current solution.
+//Time: 2194ms
+//Beats: 6.6%
+class Solution {
+ int divide(int dividend, int divisor) {
+ if(divisor == 1){
+ if(dividend > pow(2,31) - 1){
+ return (pow(2,31) - 1).toInt();
+ }
+ if(dividend < pow(-2,31)){
+ return pow(-2,31).toInt();
+ }
+ return dividend;
+ }
+ if(divisor == -1){
+ if(-dividend < pow(-2,31)){
+ return pow(-2,31).toInt();
+ }
+ if(-dividend > pow(2,31) - 1){
+ return (pow(2,31) - 1).toInt();
+ }
+ return -dividend;
+ }
+ bool negative = false;
+ if(dividend < 0){
+ dividend = dividend.abs();
+ negative = !negative;
+ }
+ if(divisor < 0){
+ divisor = divisor.abs();
+ negative = !negative;
+ }
+ int ret_val = 0;
+ while(dividend >= divisor + divisor + divisor){
+ dividend -= divisor + divisor + divisor;
+ ret_val += 3;
+ }
+ while(dividend >= divisor){
+ dividend -= divisor;
+ ret_val += 1;
+ }
+ if(-ret_val < pow(-2,31)){
+ return pow(-2,31).toInt();
+ }
+ if(ret_val > pow(2,31) - 1){
+ return (pow(2,31) - 1).toInt();
+ }
+ if(negative){
+ return -ret_val;
+ }
+ return ret_val;
+ }
+}