leetcode

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
Adivide-two-integers/divide-two-integers-V2.dart | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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; + } +}