Find Second Smallest Element in the Array - The Coding Shala
Hey there, welcome back to another post. In this post, we will learn how to find the second smallest number in the array in Java.
Find Second Smallest Element in the Array
Problem Statement
You have given an integer array, return the second smallest element from the array if exists else return no second smallest element exists.
Example 1:
Input:
[1, 4, 2, 7, 90, -1, -4]
Output:
-1
Find Second Smallest Element in the Array Solution using Single Iteration
Approach
By using the below steps we can find the second smallest element in the array by using a single iteration:
- Initialize two variables first and second for smallest and second smallest numbers and the initial value will be Integer.MAX_VALUE.
- Traverse the array and check if the current element is smaller than the smallest element then update both first and second.
- If the current element is between first and second then only update the second.
Time Complexity: O(n)
Why? Because we are just using one for Loop.
Space Complexity: O(1)
Why? We are not using any extra space. Two variables first and second are constant.
Java Program:
/** * https://www.thecodingshala.com/ */ public class Main { public static int printSecondSmallest(int[] arr) { // size is less than 2 if (arr.length < 2) { return Integer.MAX_VALUE; } int first = Integer.MAX_VALUE; int second = Integer.MAX_VALUE; for (int i = 0; i < arr.length; i++) { // if arr[i] is smaller than first and second // update both if (arr[i] < first) { second = first; first = arr[i]; } // if arr[i] is between first and second then update second else if (arr[i] < second && arr[i] != first) { second = arr[i]; } } return second; } public static void main(String[] args) { int[] arr = {3, 6, -1, 0, 55, 23, 56, 80, -96}; // int[] arr = {1}; // int[] arr = {1, 2, 2}; // int[] arr = {1, 1, 1, 1}; // print array System.out.println("The array is: "); for (int num : arr) { System.out.print(num + " "); } System.out.println(); int ele = printSecondSmallest(arr); if (ele == Integer.MAX_VALUE) { System.out.println("There is no second smallest element in the array"); } else { System.out.println("The second smallest element is: " + ele); } } }
Output:
The array is: 3 6 -1 0 55 23 56 80 -96 The second smallest element is: -1
Other Posts You May Like
- Find Second Largest Element in the Array
- Check if N and its Double exist in the Array
- Maximum Absolute Difference
- Simple XML Validator
- Hackerrank - Minimum Swaps 2 Solution
Please leave a comment below if you like this post or found some errors, it will help me to improve my content.
Comments
Post a Comment