Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f04a169

Browse files
Add Divide Two Integers solution and tests; implement various edge and complex cases
1 parent 6083db7 commit f04a169

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

‎leetcode/29.divide_two_integers.dart‎

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
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

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /