mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-07 01:35:16 +08:00
Add max of mins algorithm (#3044)
This commit is contained in:

committed by
GitHub

parent
9b5dca5534
commit
10f41eeee9
@ -0,0 +1,37 @@
|
|||||||
|
/** Author : Siddhant Swarup Mallick
|
||||||
|
* Github : https://github.com/siddhant2002
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Program description - Given an integer array. The task is to find the maximum of the minimum of the array */
|
||||||
|
package com.thealgorithms.datastructures.stacks;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class CalculateMaxOfMin {
|
||||||
|
public static int calculateMaxOfMin(int[] a) {
|
||||||
|
int n = a.length;
|
||||||
|
int[] ans = new int[n];
|
||||||
|
int[] arr2 = Arrays.copyOf(a, n);
|
||||||
|
Arrays.sort(arr2);
|
||||||
|
int maxNum = arr2[arr2.length - 1];
|
||||||
|
ans[0] = maxNum;
|
||||||
|
int index = 1;
|
||||||
|
while (index != ans.length) {
|
||||||
|
int[] minimums = new int[n - index];
|
||||||
|
for (int i = 0; i < n - index; i++) {
|
||||||
|
int[] windowArray = Arrays.copyOfRange(a, i, i + index + 1);
|
||||||
|
Arrays.sort(windowArray);
|
||||||
|
int minNum = windowArray[0];
|
||||||
|
minimums[i] = minNum;
|
||||||
|
}
|
||||||
|
Arrays.sort(minimums);
|
||||||
|
ans[index] = minimums[minimums.length - 1];
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
return ans[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Given an integer array. The task is to find the maximum of the minimum of the
|
||||||
|
* given array
|
||||||
|
*/
|
@ -0,0 +1,56 @@
|
|||||||
|
package com.thealgorithms.others;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import com.thealgorithms.datastructures.stacks.CalculateMaxOfMin;
|
||||||
|
|
||||||
|
public class CalculateMaxOfMinTest {
|
||||||
|
@Test
|
||||||
|
void testForOneElement() {
|
||||||
|
int a[] = { 10, 20, 30, 50, 10, 70, 30 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == 70);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForTwoElements() {
|
||||||
|
int a[] = { 5, 3, 2, 6, 3, 2, 6 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForThreeElements() {
|
||||||
|
int a[] = { 10, 10, 10, 10, 10, 10, 10 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForFourElements() {
|
||||||
|
int a[] = { 70, 60, 50, 40, 30, 20 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == 70);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForFiveElements() {
|
||||||
|
int a[] = { 50 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForSixElements() {
|
||||||
|
int a[] = { 1, 4, 7, 9, 2, 4, 6 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForSevenElements() {
|
||||||
|
int a[] = { -1, -5, -7, -9, -12, -14 };
|
||||||
|
int k = CalculateMaxOfMin.calculateMaxOfMin(a);
|
||||||
|
assertTrue(k == -1);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user