Find the minimum value from an array associated with another array - GeeksforGeeks

29 May, 2021
Given an integer array A[] and a character array B[] of equal lengths where every character of the array is from the set {‘a’, ‘b’, ‘c’}. Elements of both the arrays are associated with each other i.e. the value of B[i] is linked to A[i] for all valid values of i. The task is to find the value min(a + b, c). 
Examples: 
Input: A[] = {3, 6, 4, 5, 6}, B[] = {‘a’, ‘c’, ‘b’, ‘b’, ‘a’} Output: 6
Input: A[] = {4, 2, 6, 2, 3}, B[] = {‘b’, ‘a’, ‘c’, ‘a’, ‘b’} Output: 5  
Approach: In order to minimize the required value, the values of a, b and c have to be minimized. So, traverse the array and find the minimum values of a, b, and c associated with these characters in the integer array and finally return min(a + b, c).Below is the implementation of the above approach: 
C++
Java
Python3
C#
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function to get the minimum required valueint getMinimum(int A[], char B[], int n){     // To store the minimum values    // of 'a', 'b' and 'c'    int minA = INT_MAX;    int minB = INT_MAX;    int minC = INT_MAX;     // For every value of A[]    for (int i = 0; i < n; i++) {        switch (B[i]) {         // Update the minimum values of 'a',        // 'b' and 'c'        case 'a':            minA = min(A[i], minA);            break;        case 'b':            minB = min(A[i], minB);            break;        case 'c':            minC = min(A[i], minC);            break;        }    }     // Return the minimum required value    return min(minA + minB, minC);} // Driver codeint main(){    int A[] = { 4, 2, 6, 2, 3 };    char B[] = { 'b', 'a', 'c', 'a', 'b' };     int n = sizeof(A) / sizeof(A[0]);     cout << getMinimum(A, B, n);}
// Java implementation of the above approachclass GFG{ // Function to get the minimum required valuestatic int getMinimum(int A[], char B[], int n){     // To store the minimum values    // of 'a', 'b' and 'c'    int minA = Integer.MAX_VALUE;    int minB = Integer.MAX_VALUE;    int minC = Integer.MAX_VALUE;     // For every value of A[]    for (int i = 0; i < n; i++)    {        switch (B[i])        {             // Update the minimum values of 'a',            // 'b' and 'c'            case 'a':                minA = Math.min(A[i], minA);                break;                             case 'b':                minB = Math.min(A[i], minB);                break;                             case 'c':                minC = Math.min(A[i], minC);                break;        }    }     // Return the minimum required value    return Math.min(minA + minB, minC);} // Driver codepublic static void main(String[] args){    int A[] = { 4, 2, 6, 2, 3 };    char B[] = { 'b', 'a', 'c', 'a', 'b' };     int n = A.length;     System.out.println(getMinimum(A, B, n));}} // This code is contributed by Rajput-Ji
# Python3 implementation of the approach # Function to get the minimum required valuedef getMinimum(A, B, n):     # To store the minimum values    # of 'a', 'b' and 'c'    minA = float('inf');    minB = float('inf');    minC = float('inf');     # For every value of A[]    for i in range(n):        if B[i]=='a':            minA = min(A[i], minA)        if B[i]=='b':            minB = min(A[i], minB)        if B[i]=='c':            minB = min(A[i], minC)     # Return the minimum required value    return min(minA + minB, minC) # Driver codeif __name__ == '__main__':    A = [ 4, 2, 6, 2, 3 ]    B = [ 'b', 'a', 'c', 'a', 'b' ]    n = len(A);     print(getMinimum(A, B, n)) # This code is contributed by Ashutosh450
// C# implementation of the above approachusing System; class GFG{         // Function to get the minimum required value    static int getMinimum(int []A, char []B, int n)    {             // To store the minimum values        // of 'a', 'b' and 'c'        int minA = int.MaxValue;        int minB = int.MaxValue;        int minC = int.MaxValue;             // For every value of A[]        for (int i = 0; i < n; i++)        {            switch (B[i])            {                     // Update the minimum values of 'a',                // 'b' and 'c'                case 'a':                    minA = Math.Min(A[i], minA);                    break;                                     case 'b':                    minB = Math.Min(A[i], minB);                    break;                                     case 'c':                    minC = Math.Min(A[i], minC);                    break;            }        }             // Return the minimum required value        return Math.Min(minA + minB, minC);    }         // Driver code    public static void Main()    {        int []A = { 4, 2, 6, 2, 3 };        char []B = { 'b', 'a', 'c', 'a', 'b' };             int n = A.Length;             Console.WriteLine(getMinimum(A, B, n));    }} // This code is contributed by AnkitRai01
<script>  // Javascript implementation of the approach // Function to get the minimum required valuefunction getMinimum(A, B, n){     // To store the minimum values    // of 'a', 'b' and 'c'    var minA = 1000000000;    var minB = 1000000000;    var minC = 1000000000;     // For every value of A[]    for (var i = 0; i < n; i++) {        switch (B[i]) {         // Update the minimum values of 'a',        // 'b' and 'c'        case 'a':            minA = Math.min(A[i], minA);            break;        case 'b':            minB = Math.min(A[i], minB);            break;        case 'c':            minC = Math.min(A[i], minC);            break;        }    }     // Return the minimum required value    return Math.min(minA + minB, minC);} // Driver codevar A = [4, 2, 6, 2, 3 ];var B = ['b', 'a', 'c', 'a', 'b'];var n = A.length;document.write( getMinimum(A, B, n));   </script>
5
 
Rajput-Ji
ankthon
ashutosh450
rutvik_56
Arrays
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Window Sliding Technique
Trapping Rain Water
Reversal algorithm for array rotation
Move all negative numbers to beginning and positive to end with constant extra space
Program to find sum of elements in a given array
Building Heap from Array
Find duplicates in O(n) time and O(1) extra space | Set 1
Next Greater Element
Count pairs with given sum
Remove duplicates from sorted array