C# Programming Interview Questions Tutorial
C# Interview Question: Get second highest number in Array
In these type of interview question, interviewer will give an array of integers and ask to write a program that will find the second heighest number in the array.
Always remember to ask questions to the interviewer about the requirement. For example here are few questions that you could ask to interviewer:
- Is there any restriction of minimum number of elements in array, if no, what to return if there is only one element in array?
- What if there is two same highest number in the array?
There could be multiple ways to solve this problem. Here we are showin few of them:
Method 1:
In this method we will use foreach loop, or for loop, to check every element and keep track of highest and second highest number.
using System;
class Program {
static void Main() {
int[] arr = new int[] {1,4,7,5,3,2,0};
GetSecondHeighestNumber(arr);
GetSecondHeighestNumber(new[] {1,2});
GetSecondHeighestNumber(new[] {1});
GetSecondHeighestNumber(new[] {1,2, 2});
GetSecondHeighestNumber(new[] {0,2});
GetSecondHeighestNumber(new[] {-2, -1, 2});
GetSecondHeighestNumber(new[] {4,15,34,2,33,67,44,58,66,78,90,44,23,67});
}
public static void GetSecondHeighestNumber(int[] arr) {
if(arr.Length == 0 || arr.Length == 1){
Console.WriteLine("Second Largest Number is: NULL");
return;
}
int maxNumber = arr[0];
int secondMaxNumber = arr[0];
foreach(int item in arr){
if(item > maxNumber){
secondMaxNumber = maxNumber;
maxNumber = item;
}
if(item > secondMaxNumber && item < maxNumber){
secondMaxNumber = item;
}
}
Console.WriteLine("Second Largest Number is: " + secondMaxNumber);
}
}
Output:
Second Largest Number is: 5
Second Largest Number is: 1
Second Largest Number is: NULL
Second Largest Number is: 1
Second Largest Number is: 0
Second Largest Number is: -1
Second Largest Number is: 78
Here we are checking if arrey length is atleast two elements and also we are not initializing the numbers with 0 because we don't know if array will contain negative numbers or not, so initializing them with first element of array.
Method 2:
In this second way of finding the second largest element, we will simply short the array, and depending if you sorted it in ascending order, we will need to reverse the array and pick the second element directly.
using System;
class Program {
static void Main() {
Console.WriteLine("Second Largest Number is: " + GetSecondHeighestNumber(new[] {1,2}));
Console.WriteLine("Second Largest Number is: " + GetSecondHeighestNumber(new[] {1}));
Console.WriteLine("Second Largest Number is: " + GetSecondHeighestNumber(new[] {1,2, 2}));
Console.WriteLine("Second Largest Number is: " + GetSecondHeighestNumber(new[] {0,2}));
Console.WriteLine("Second Largest Number is: " + GetSecondHeighestNumber(new[] {-2, -1, 2}));
Console.WriteLine("Second Largest Number is: " + GetSecondHeighestNumber(new[] {4,15,34,2,33,67,44,58,66,78,90,44,23,67}));
}
public static int? GetSecondHeighestNumber(int[] arr) {
if(arr.Length == 0 || arr.Length == 1){
return null;
}
//sorting array in ascending
Array.Sort(arr);
// Reverse the array values
Array.Reverse(arr);
return arr[1];
}
}
Output:
Second Largest Number is: 1
Second Largest Number is:
Second Largest Number is: 2
Second Largest Number is: 0
Second Largest Number is: -1
Second Largest Number is: 78
In both of the above methods, we will need to loop through each element.