Open In App

Find max in struct array

Given a struct array of type Height, find max

struct Height{
int feet;
int inches;
}

Question source : Microsoft Interview Experience Set 127 | (On-Campus for IDC) 

The idea is simple, traverse the array, and keep track of max value 
value of array element(in inches) = 12*feet + inches 

Implementation:

// CPP program to return max
// in struct array
#include <climits>
#include <iostream>
using namespace std;

// struct Height
// 1 feet = 12 inches
struct Height {
    int feet;
    int inches;
};

// return max of the array
int findMax(Height arr[], int n)
{
    int mx = INT_MIN;
    for (int i = 0; i < n; i++) {
        int temp = 12 * (arr[i].feet) + arr[i].inches;
        mx = max(mx, temp);
    }
    return mx;
}

// driver program
int main()
{
    // initialize the array
    Height arr[] = {
        { 1, 3 }, { 10, 5 }, { 6, 8 }, { 3, 7 }, { 5, 9 }
    };
    int res = findMax(arr, 5);
    cout << "max :: " << res << endl;
    return 0;
}
// Java program to return max
// in class array
import java.lang.Integer;

// class Height
// 1 feet = 12 inches
class Height {
    int feet;
    int inches;
}

public class Main {

    // return max of the array
    public static int findMax(Height arr[])
    {
        int mx = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            int temp = 12 * (arr[i].feet) + arr[i].inches;
            mx = Math.max(mx, temp);
        }
        return mx;
    }

    // driver program
    public static void main(String[] args)
    {
        // initialize the array
        Height arr[] = { new Height(){ { feet = 1;
        inches = 3;
    }
}
, new Height() {
    {
        feet = 10;
        inches = 5;
    }
}, new Height() {
    {
        feet = 6;
        inches = 8;
    }
}, new Height() {
    {
        feet = 3;
        inches = 7;
    }
}, new Height() {
    {
        feet = 5;
        inches = 9;
    }
}
}
;
int res = findMax(arr);
System.out.println("max :: " + res);
}
}
# Python program to return max
# in list of dictionaries

# Importing the sys module for INT_MIN
import sys

# Dictionary to represent Height
# 1 feet = 12 inches


class Height:
    def __init__(self, feet, inches):
        self.feet = feet
        self.inches = inches

# Function to return max of the list


def findMax(arr):
    mx = -sys.maxsize - 1
    for i in arr:
        temp = 12 * i['feet'] + i['inches']
        mx = max(mx, temp)
    return mx


# Driver program
if __name__ == "__main__":
    # Initialize the list
    arr = [
        {'feet': 1, 'inches': 3},
        {'feet': 10, 'inches': 5},
        {'feet': 6, 'inches': 8},
        {'feet': 3, 'inches': 7},
        {'feet': 5, 'inches': 9}
    ]
    res = findMax(arr)
    print("max ::", res)
class Height {
    constructor(feet, inches) {
        this.feet = feet;
        this.inches = inches;
    }
}

function findMax(arr) {
    let mx = Number.MIN_VALUE;
    for (let i = 0; i < arr.length; i++) {
        let temp = 12 * arr[i].feet + arr[i].inches;
        mx = Math.max(mx, temp);
    }
    return mx;
}

// Driver program
function main() {
    // Initialize the array
    const arr = [
        new Height(1, 3),
        new Height(10, 5),
        new Height(6, 8),
        new Height(3, 7),
        new Height(5, 9)
    ];
    const res = findMax(arr);
    console.log("max :: " + res);
}

main();

Output
max :: 125

Article Tags :