Skip to content

Commit 8563aa3

Browse files
authored
Create 45 maximum gap.cpp
1 parent bf33469 commit 8563aa3

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

Diff for: Array/Problems/45 maximum gap.cpp

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
int maxSortedAdjacentDiff(int* arr, int n)
4+
{
5+
int maxVal = arr[0], minVal = arr[0];
6+
for (int i = 1; i < n; i++) {
7+
maxVal = max(maxVal, arr[i]);
8+
minVal = min(minVal, arr[i]);
9+
}
10+
int maxBucket[n - 1];
11+
int minBucket[n - 1];
12+
fill_n(maxBucket, n - 1, INT_MIN);
13+
fill_n(minBucket, n - 1, INT_MAX);
14+
float delta = (float)(maxVal - minVal) / (float)(n - 1);
15+
for (int i = 0; i < n; i++) {
16+
if (arr[i] == maxVal || arr[i] == minVal)
17+
continue;
18+
int index = (float)(floor(arr[i] - minVal) / delta);
19+
maxBucket[index] = max(maxBucket[index], arr[i]);
20+
minBucket[index] = min(minBucket[index], arr[i]);
21+
}
22+
int prev_val = minVal;
23+
int max_gap = 0;
24+
for (int i = 0; i < n - 1; i++) {
25+
if (minBucket[i] == INT_MAX)
26+
continue;
27+
max_gap = max(max_gap, minBucket[i] - prev_val);
28+
prev_val = maxBucket[i];
29+
}
30+
max_gap = max(max_gap, maxVal - prev_val);
31+
32+
return max_gap;
33+
}
34+
int main()
35+
{
36+
int n;
37+
cin>>n;
38+
int arr[n];
39+
for (int i=0;i<n;i++)
40+
{
41+
cin>>arr[i];
42+
}
43+
cout << maxSortedAdjacentDiff(arr, n) << endl;
44+
return 0;
45+
}

0 commit comments

Comments
 (0)