|
| 1 | +// https://leetcode.com/problems/divide-two-integers/description/ |
| 2 | +// Not solved it contains an error |
| 3 | +import 'package:test/test.dart'; |
| 4 | + |
| 5 | +void main(List<String> args) { |
| 6 | + final stopwatch = Stopwatch()..start(); |
| 7 | + runTests(); |
| 8 | + |
| 9 | + // print(Solution().divide(-17, 5)); |
| 10 | + stopwatch.stop(); |
| 11 | + print('Function Execution Time : ${stopwatch.elapsedMicroseconds} micro sec'); |
| 12 | +} |
| 13 | + |
| 14 | +class Solution { |
| 15 | + int divide(int dividend, int divisor) { |
| 16 | + if (divisor == 1) return dividend; |
| 17 | + if (dividend == 0) return 0; |
| 18 | + if (divisor == 1) return dividend * -1; |
| 19 | + |
| 20 | + return dividend ~/ divisor; |
| 21 | + } |
| 22 | +} |
| 23 | + |
| 24 | +void runTests() { |
| 25 | + final Solution s = Solution(); |
| 26 | + |
| 27 | + group('Divide Two Integers', () { |
| 28 | + // Basic examples from problem statement |
| 29 | + test('Example 1: 10 / 3 = 3', () { |
| 30 | + expect(s.divide(10, 3), equals(3)); |
| 31 | + }); |
| 32 | + |
| 33 | + test('Example 2: 7 / -3 = -2', () { |
| 34 | + expect(s.divide(7, -3), equals(-2)); |
| 35 | + }); |
| 36 | + |
| 37 | + // Edge cases |
| 38 | + test('Divide by 1: 15 / 1 = 15', () { |
| 39 | + expect(s.divide(15, 1), equals(15)); |
| 40 | + }); |
| 41 | + |
| 42 | + test('Divide by -1: 15 / -1 = -15', () { |
| 43 | + expect(s.divide(15, -1), equals(-15)); |
| 44 | + }); |
| 45 | + |
| 46 | + test('Divide by self: 20 / 20 = 1', () { |
| 47 | + expect(s.divide(20, 20), equals(1)); |
| 48 | + }); |
| 49 | + |
| 50 | + test('Divide by negative self: 20 / -20 = -1', () { |
| 51 | + expect(s.divide(20, -20), equals(-1)); |
| 52 | + }); |
| 53 | + |
| 54 | + // Large numbers |
| 55 | + test('Large dividend: 2147483647 / 1 = 2147483647', () { |
| 56 | + expect(s.divide(2147483647, 1), equals(2147483647)); |
| 57 | + }); |
| 58 | + |
| 59 | + test('Large negative dividend: -2147483648 / 1 = -2147483648', () { |
| 60 | + expect(s.divide(-2147483648, 1), equals(-2147483648)); |
| 61 | + }); |
| 62 | + |
| 63 | + // Overflow cases |
| 64 | + test('Overflow positive: -2147483648 / -1 = 2147483648', () { |
| 65 | + expect(s.divide(-2147483648, -1), equals(2147483648)); |
| 66 | + }); |
| 67 | + |
| 68 | + test('Overflow negative: -2147483648 / 1 = -2147483648', () { |
| 69 | + expect(s.divide(-2147483648, 1), equals(-2147483648)); |
| 70 | + }); |
| 71 | + |
| 72 | + // Zero cases |
| 73 | + test('Zero dividend: 0 / 5 = 0', () { |
| 74 | + expect(s.divide(0, 5), equals(0)); |
| 75 | + }); |
| 76 | + |
| 77 | + test('Zero dividend negative divisor: 0 / -5 = 0', () { |
| 78 | + expect(s.divide(0, -5), equals(0)); |
| 79 | + }); |
| 80 | + |
| 81 | + // Power of two divisions |
| 82 | + test('Power of two division: 16 / 4 = 4', () { |
| 83 | + expect(s.divide(16, 4), equals(4)); |
| 84 | + }); |
| 85 | + |
| 86 | + test('Negative power of two: -32 / 8 = -4', () { |
| 87 | + expect(s.divide(-32, 8), equals(-4)); |
| 88 | + }); |
| 89 | + |
| 90 | + // Large divisor |
| 91 | + test('Large divisor: 2147483647 / 2147483647 = 1', () { |
| 92 | + expect(s.divide(2147483647, 2147483647), equals(1)); |
| 93 | + }); |
| 94 | + |
| 95 | + test('Large negative divisor: -2147483648 / -2147483648 = 1', () { |
| 96 | + expect(s.divide(-2147483648, -2147483648), equals(1)); |
| 97 | + }); |
| 98 | + |
| 99 | + // Complex cases |
| 100 | + test('Complex case 1: 123456 / 789 = 156', () { |
| 101 | + expect(s.divide(123456, 789), equals(156)); |
| 102 | + }); |
| 103 | + |
| 104 | + test('Complex case 2: -123456 / 789 = -156', () { |
| 105 | + expect(s.divide(-123456, 789), equals(-156)); |
| 106 | + }); |
| 107 | + |
| 108 | + // Minimum constraints |
| 109 | + test('Minimum dividend: -2147483648 / 2 = -1073741824', () { |
| 110 | + expect(s.divide(-2147483648, 2), equals(-1073741824)); |
| 111 | + }); |
| 112 | + |
| 113 | + test('Minimum divisor: 2147483647 / -2147483648 = 0', () { |
| 114 | + expect(s.divide(2147483647, -2147483648), equals(0)); |
| 115 | + }); |
| 116 | + |
| 117 | + // Special cases |
| 118 | + test('Odd division: 17 / 5 = 3', () { |
| 119 | + expect(s.divide(17, 5), equals(3)); |
| 120 | + }); |
| 121 | + |
| 122 | + test('Negative odd division: -17 / 5 = -3', () { |
| 123 | + expect(s.divide(-17, 5), equals(-3)); |
| 124 | + }); |
| 125 | + |
| 126 | + test('Negative odd division: -2147483648 / -1 = 2147483648', () { |
| 127 | + expect(s.divide(-2147483648, -1), equals(2147483648)); |
| 128 | + }); |
| 129 | + }); |
| 130 | +} |
0 commit comments