Epic Systems Interview Question
Software Engineer / DevelopersIf only min and max are asked, it is not necessary to use extra buffer to store odd and even numbers.
For every element, tell it is odd or even
If even, compare with the current min
If odd, compare with the current max
One obvious assumption is the input is not sorted
*************************************************************
1. Accept inpt[n];
2. min_even = 0; // Initialization & Zero is not in Input
3. max_odd = 1; // Initialization & 1 is not in Input
4. for int i = 0 to n do
{ //Check even or odd
if (inpt[i] % 2 == 0)
{ // Ckeck for min of even
if (inpt[i] < min_even))
min_even = inpt[i];
}
else
{ // Check for Max of Odd #'s
if (inpt[i]>max_odd)
max_odd = inpt[i]
}
} // End of for
5. Print min_even, max_odd
**************************************************
This Algorithm is linear
#include<stdio.h>
#include<limits.h>
void printMaxOddMinEven(int a ){
int i = 0;
int maxOdd =INT_MAX;
int minEven = INT_MIN;
int inputs[10] = {3,5,10,234,124,11,201,100,20,2};
while(i!=10){
if(inputs[i]%2 == 0){
if(minEven == INT_MIN){
minEven = inputs[i];
}else if(minEven > inputs[i]){
minEven = inputs[i];
}
}else{
if(maxOdd==INT_MAX){
maxOdd=inputs[i];
}else if(maxOdd < inputs[i]){
maxOdd = inputs[i];
}
}
i++;
}
printf("\n MaxOdd:%d, MinEven:%d",maxOdd,minEven);
}
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int minEven = 999998;
int maxOdd = -999999;
while(sc.hasNextInt()){
int number = sc.nextInt();
if(number % 2 == 0){
if(number < minEven)
minEven = number;
}
else{
if(number > maxOdd)
maxOdd = number;
}
}
System.out.println(minEven);
System.out.println(maxOdd);
}
}
public class SmallestEvenLargestOdd {
public static void main(String[] args) {
int smallestEven = 1;
int largestOdd = 2;
int num;
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
System.out.print(args[i] + " ");
}
System.out.println();
for (int i = 0; i < args.length; i++) {
num = Integer.valueOf(args[i]);
if (num % 2 != 0) {
if (largestOdd == 2) {
largestOdd = num;
}
if (num > largestOdd) {
largestOdd = num;
}
} else {
if (smallestEven == 1) {
smallestEven = num;
}
if (num < smallestEven) {
smallestEven = num;
}
}
}
}
if (smallestEven == 1) {
System.out.println("No smallest even found!");
} else {
System.out.println("Smallest even is " + smallestEven);
}
if (largestOdd == 2) {
System.out.println("No largest odd found!");
} else {
System.out.println("Largest odd is " + largestOdd);
}
}
}
int main()
{
int a[]={0,55,-2,3,6,-9};
int smalleven;
int largeodd;
int flag_even=0;
int flag_odd=0;
for(int i=0;i<sizeof(a)/sizeof(int);++i)
{
if(a[i]%2==0)
{
if(flag_even==0)
{
flag_even=1;
smalleven=a[i];
}
else if(a[i]<smalleven)
smalleven=a[i];
}
else
{
if(flag_odd==0)
{
largeodd=a[i];
flag_odd=1;
}
else if(a[i]>largeodd)
largeodd=a[i];
}
}
cout<<smalleven<<" "<<largeodd<<endl;
}
// smalleven_largeodd.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void input(int arr[], int size)
{
for(int i = 0;i < size;i++)
cin>>arr[i];
}
void sort(int arr[], int arr_odd[], int arr_even[], int size)
{
int small_even, large_odd;
int odd=0,even=0;
for(int i = 0; i < size; i++)
{
if(arr[i]%2 == 0)
{
arr_even[even] = arr[i] ;
even++;
}
else
{
arr_odd[odd] = arr[i];
odd++;
}
}
cout<<"\nODD"<<endl;
for(int j = 0; j < odd; j++)
{
cout<<arr_odd[j]<<"\t";
}
cout<<"\n\n\nEVEN"<<endl;
for(int j = 0; j < even; j++)
{
cout<<arr_even[j]<<"\t";
}
large_odd = arr_odd[0];
for(int i = 0; i<odd;i++)
{
if(arr_odd[i] > large_odd)
large_odd = arr_odd[i];
else
continue;
}
small_even = arr_even[0];
for (int i = 0; i<even;i++)
{
if(small_even < arr_even[i])
continue;
else
small_even = arr_even[i];
}
cout<<"\nTHERE ARE "<<odd<<" ODDS AND "<<even<<" EVENS";
cout<<"\nLARGEST ODD: "<<large_odd;
cout<<"\nSMALLEST EVEN: " <<small_even;
}
void main()
{
int size;
cout<<"Enter the number of elements : ";
cin>>size;
int *arr = new int(size);
int *arr_odd = new int(size);
int *arr_even = new int(size);
cout<<"ENTER THE ELEMENTS "<<endl;
input(arr,size);
sort(arr, arr_odd, arr_even, size);
cout<<endl;
system("PAUSE");
}
#include<stdio.h>
int main()
{
long min = 0,max = 0;
int i,arr[10] = {2,4,5,6,7,-8,0,9,10,11};
for (i=0;i<10;i++)
{
if(arr[i]%2 == 0)
{
if (min == 0)
{
min = arr[i];
}
if (min > arr[i])
{
min = arr[i];
}
}
else
{
if (max == 0)
{
max = arr[i];
}
if (max < arr[i])
{
max = arr[i];
}
}
}
printf("\nSmallest min is %ld",min);
printf("\nlargest odd is %ld\n",max);
return 0;
}
#include<stdio.h>
main()
{ int i,h=66666666,l=-43423,n;
int a[20];
printf("Enter the no of elements\n");
scanf("%d",&n);
for(i=0 ;i<n; i++)
{ scanf("%d",&a[i]);
if(a[i]%2==0 && a[i]<h)
h=a[i];
else
if (a[i]%2==1 && a[i]>l)
l=a[i];
}
printf("The smallest even no is %d & largest odd no is %d\n",h,l);
}
package com.badal.careercup;
- badalrocks January 06, 2009import java.util.ArrayList;
import java.util.Collections;
public class ReplaceString {
public static void main(String[] args) throws Exception{
ArrayList<Integer> inputEven=new ArrayList<Integer>();
ArrayList<Integer> inputOdd=new ArrayList<Integer>();
for(int i=0;i<args.length;i++){
if(i%2==0){
inputEven.add(Integer.parseInt(args[i]));
}else{
inputOdd.add(Integer.parseInt(args[i]));
}
}
// display even arraylist
for(int x:inputEven){
System.out.print("Even array list is: ");
System.out.print(x+" ");
}
System.out.println();
// display odd arraylist
for(int x:inputOdd){
System.out.print("Odd array list is: ");
System.out.print(x+" ");
}
System.out.println();
Object objMinEven=Collections.min(inputEven);
Object objMaxOdd=Collections.max(inputOdd);
System.out.println("The minimum even number is: "+objMinEven);
System.out.println("The maximum odd number is: "+objMaxOdd);
}
}