Skip to main content

Smallest positive missing number in an array

Here given code implementation process.

/*
    C program for
    Smallest positive missing number in an array
*/
#include <stdio.h>

// Display array elements
void printArray(int arr[], int n)
{
	for (int i = 0; i < n; ++i)
	{
		printf("  %d", arr[i]);
	}
}
void firstPositiveSmallest(int arr[], int n)
{
	if (n <= 0)
	{
		return;
	}
	int check[n];
	// Set initial value of auxiliary array
	for (int i = 0; i < n; ++i)
	{
		// Zero are indicate number is missing
		check[i] = 0;
	}
	for (int i = 0; i < n; ++i)
	{
		if (arr[i] > 0 && arr[i] <= n)
		{
			// When number exist between 1 to n
			check[arr[i] - 1] = 1;
		}
	}
	int result = 0;
	// This loop are executed until not find smallest missing number
	while (result < n && check[result] == 1)
	{
		result++;
	}
	printf("\n Array : ");
	printArray(arr, n);
	// Display calculated result
	printf("\n  Result :  %d \n", result + 1);
}
int main(int argc, char
	const *argv[])
{
	int arr1[] = {
		1 , 2 , -4 , 5 , -4 , 3 , -5
	};
	int arr2[] = {
		1 , -3 , 4 , 0 , 6 , 2
	};
	int arr3[] = {
		3 , 4 , 1 , 2
	};
	// Get the size of arrays
	int l = sizeof(arr1) / sizeof(arr1[0]);
	int m = sizeof(arr2) / sizeof(arr2[0]);
	int n = sizeof(arr3) / sizeof(arr3[0]);
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]

	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	firstPositiveSmallest(arr1, l);
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]

	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	firstPositiveSmallest(arr2, m);
	// Test C
	/*
	   arr =  [3,4, 1, 2]

	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	firstPositiveSmallest(arr3, n);
	return 0;
}

Output

 Array :   1  2  -4  5  -4  3  -5
  Result :  4

 Array :   1  -3  4  0  6  2
  Result :  3

 Array :   3  4  1  2
  Result :  5
/*
    Java program for
    Smallest positive missing number in an array
*/
public class Missing
{
	// Display array elements
	public void printArray(int[] arr, int n)
	{
		for (int i = 0; i < n; ++i)
		{
			System.out.print(" " + arr[i]);
		}
	}
	public void firstPositiveSmallest(int[] arr, int n)
	{
		if (n <= 0)
		{
			return;
		}
		boolean[] check = new boolean[n];
		// Set initial value of auxiliary array
		for (int i = 0; i < n; ++i)
		{
			// False are indicate number is missing
			check[i] = false;
		}
		for (int i = 0; i < n; ++i)
		{
			if (arr[i] > 0 && arr[i] <= n)
			{
				// When number exist between 1 to n
				check[arr[i] - 1] = true;
			}
		}
		int result = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check[result] == true)
		{
			result++;
		}
		System.out.print("\n Array : ");
		printArray(arr, n);
		// Display calculated result
		System.out.print("\n Result : " + (result + 1) + " \n");
	}
	public static void main(String[] args)
	{
		Missing task = new Missing();
		int[] arr1 = {
			1 , 2 , -4 , 5 , -4 , 3 , -5
		};
		int[] arr2 = {
			1 , -3 , 4 , 0 , 6 , 2
		};
		int[] arr3 = {
			3 , 4 , 1 , 2
		};
		// Get the size of arrays
		int l = arr1.length;
		int m = arr2.length;
		int n = arr3.length;
		// Test A
		/*
		   arr =  [1, 2, -4, 5, -4, 3, -5]

		   [1,2,5,3]  Positive number
		   ---------------------
		   Smallest missing : 4
		*/
		task.firstPositiveSmallest(arr1, l);
		// Test B
		/*
		   arr =  [1, -3, 4, 0, 6, 2]

		   [1,4,6,2]  Positive number
		   ---------------------
		   Smallest missing : 3
		*/
		task.firstPositiveSmallest(arr2, m);
		// Test C
		/*
		   arr =  [3,4, 1, 2]

		   [3,4, 1, 2]  Positive number
		   ---------------------
		   Smallest missing : 5
		*/
		task.firstPositiveSmallest(arr3, n);
	}
}

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
// Include header file
#include <iostream>

using namespace std;
/*
    C++ program for
    Smallest positive missing number in an array
*/
class Missing
{
	public:
		// Display array elements
		void printArray(int arr[], int n)
		{
			for (int i = 0; i < n; ++i)
			{
				cout << " " << arr[i];
			}
		}
	void firstPositiveSmallest(int arr[], int n)
	{
		if (n <= 0)
		{
			return;
		}
		bool check[n];
		// Set initial value of auxiliary array
		for (int i = 0; i < n; ++i)
		{
			// False are indicate number is missing
			check[i] = false;
		}
		for (int i = 0; i < n; ++i)
		{
			if (arr[i] > 0 && arr[i] <= n)
			{
				// When number exist between 1 to n
				check[arr[i] - 1] = true;
			}
		}
		int result = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check[result] == true)
		{
			result++;
		}
		cout << "\n Array : ";
		this->printArray(arr, n);
		// Display calculated result
		cout << "\n Result : " << (result + 1) << " \n";
	}
};
int main()
{
	Missing *task = new Missing();
	int arr1[] = {
		1 , 2 , -4 , 5 , -4 , 3 , -5
	};
	int arr2[] = {
		1 , -3 , 4 , 0 , 6 , 2
	};
	int arr3[] = {
		3 , 4 , 1 , 2
	};
	// Get the size of arrays
	int l = sizeof(arr1) / sizeof(arr1[0]);
	int m = sizeof(arr2) / sizeof(arr2[0]);
	int n = sizeof(arr3) / sizeof(arr3[0]);
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]
	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	task->firstPositiveSmallest(arr1, l);
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]
	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	task->firstPositiveSmallest(arr2, m);
	// Test C
	/*
	   arr =  [3,4, 1, 2]
	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	task->firstPositiveSmallest(arr3, n);
	return 0;
}

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
// Include namespace system
using System;
/*
    Csharp program for
    Smallest positive missing number in an array
*/
public class Missing
{
	// Display array elements
	public void printArray(int[] arr, int n)
	{
		for (int i = 0; i < n; ++i)
		{
			Console.Write(" " + arr[i]);
		}
	}
	public void firstPositiveSmallest(int[] arr, int n)
	{
		if (n <= 0)
		{
			return;
		}
		Boolean[] check = new Boolean[n];
		// Set initial value of auxiliary array
		for (int i = 0; i < n; ++i)
		{
			// False are indicate number is missing
			check[i] = false;
		}
		for (int i = 0; i < n; ++i)
		{
			if (arr[i] > 0 && arr[i] <= n)
			{
				// When number exist between 1 to n
				check[arr[i] - 1] = true;
			}
		}
		int result = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check[result] == true)
		{
			result++;
		}
		Console.Write("\n Array : ");
		this.printArray(arr, n);
		// Display calculated result
		Console.Write("\n Result : " + (result + 1) + " \n");
	}
	public static void Main(String[] args)
	{
		Missing task = new Missing();
		int[] arr1 = {
			1 , 2 , -4 , 5 , -4 , 3 , -5
		};
		int[] arr2 = {
			1 , -3 , 4 , 0 , 6 , 2
		};
		int[] arr3 = {
			3 , 4 , 1 , 2
		};
		// Get the size of arrays
		int l = arr1.Length;
		int m = arr2.Length;
		int n = arr3.Length;
		// Test A
		/*
		   arr =  [1, 2, -4, 5, -4, 3, -5]
		   [1,2,5,3]  Positive number
		   ---------------------
		   Smallest missing : 4
		*/
		task.firstPositiveSmallest(arr1, l);
		// Test B
		/*
		   arr =  [1, -3, 4, 0, 6, 2]
		   [1,4,6,2]  Positive number
		   ---------------------
		   Smallest missing : 3
		*/
		task.firstPositiveSmallest(arr2, m);
		// Test C
		/*
		   arr =  [3,4, 1, 2]
		   [3,4, 1, 2]  Positive number
		   ---------------------
		   Smallest missing : 5
		*/
		task.firstPositiveSmallest(arr3, n);
	}
}

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
package main
import "fmt"
/*
    Go program for
    Smallest positive missing number in an array
*/
// Display array elements
func printArray(arr[] int, n int) {
	for i := 0 ; i < n ; i++ {
		fmt.Print(" ", arr[i])
	}
}
func firstPositiveSmallest(arr[] int, n int) {
	if n <= 0 {
		return
	}
	// Set initial value of auxiliary array
	// False are indicate number is missing
	var check = make([] bool, n)
	for i := 0 ; i < n ; i++ {
		if arr[i] > 0 && arr[i] <= n {
			// When number exist between 1 to n
			check[arr[i] - 1] = true
		}
	}
	var result int = 0
	// This loop are executed until not find smallest missing number
	for (result < n && check[result] == true) {
		result++
	}
	fmt.Print("\n Array : ")
	printArray(arr, n)
	// Display calculated result
	fmt.Print("\n Result : ", (result + 1), " \n")
}
func main() {
	
	var arr1 = [] int { 1, 2, -4, 5, -4, 3, -5 }
	var arr2 = [] int { 1, -3, 4, 0, 6, 2 }
	var arr3 = [] int { 3,4, 1, 2 }
	// Get the size of arrays
	var l int = len(arr1)
	var m int = len(arr2)
	var n int = len(arr3)
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]
	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	firstPositiveSmallest(arr1, l)
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]
	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	firstPositiveSmallest(arr2, m)
	// Test C
	/*
	   arr =  [3,4, 1, 2]
	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	firstPositiveSmallest(arr3, n)
}

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
<?php
/*
    Php program for
    Smallest positive missing number in an array
*/
class Missing
{
	// Display array elements
	public	function printArray($arr, $n)
	{
		for ($i = 0; $i < $n; ++$i)
		{
			echo(" ".$arr[$i]);
		}
	}
	public	function firstPositiveSmallest($arr, $n)
	{
		if ($n <= 0)
		{
			return;
		}
		// Set initial value of auxiliary array
		// False are indicate number is missing
		$check = array_fill(0, $n, false);
		for ($i = 0; $i < $n; ++$i)
		{
			if ($arr[$i] > 0 && $arr[$i] <= $n)
			{
				// When number exist between 1 to n
				$check[$arr[$i] - 1] = true;
			}
		}
		$result = 0;
		// This loop are executed until not find smallest missing number
		while ($result < $n && $check[$result] == true)
		{
			$result++;
		}
		echo("\n Array : ");
		$this->printArray($arr, $n);
		// Display calculated result
		echo("\n Result : ".($result + 1).
			" \n");
	}
}

function main()
{
	$task = new Missing();
	$arr1 = array(1, 2, -4, 5, -4, 3, -5);
	$arr2 = array(1, -3, 4, 0, 6, 2);
	$arr3 = array(3, 4, 1, 2);
	// Get the size of arrays
	$l = count($arr1);
	$m = count($arr2);
	$n = count($arr3);
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]
	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	$task->firstPositiveSmallest($arr1, $l);
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]
	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	$task->firstPositiveSmallest($arr2, $m);
	// Test C
	/*
	   arr =  [3,4, 1, 2]
	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	$task->firstPositiveSmallest($arr3, $n);
}
main();

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
/*
    Node JS program for
    Smallest positive missing number in an array
*/
class Missing
{
	// Display array elements
	printArray(arr, n)
	{
		for (var i = 0; i < n; ++i)
		{
			process.stdout.write(" " + arr[i]);
		}
	}
	firstPositiveSmallest(arr, n)
	{
		if (n <= 0)
		{
			return;
		}
		// Set initial value of auxiliary array
		// False are indicate number is missing
		var check = Array(n).fill(false);
		for (var i = 0; i < n; ++i)
		{
			if (arr[i] > 0 && arr[i] <= n)
			{
				// When number exist between 1 to n
				check[arr[i] - 1] = true;
			}
		}
		var result = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check[result] == true)
		{
			result++;
		}
		process.stdout.write("\n Array : ");
		this.printArray(arr, n);
		// Display calculated result
		process.stdout.write("\n Result : " + (result + 1) + " \n");
	}
}

function main()
{
	var task = new Missing();
	var arr1 = [1, 2, -4, 5, -4, 3, -5];
	var arr2 = [1, -3, 4, 0, 6, 2];
	var arr3 = [3, 4, 1, 2];
	// Get the size of arrays
	var l = arr1.length;
	var m = arr2.length;
	var n = arr3.length;
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]
	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	task.firstPositiveSmallest(arr1, l);
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]
	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	task.firstPositiveSmallest(arr2, m);
	// Test C
	/*
	   arr =  [3,4, 1, 2]
	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	task.firstPositiveSmallest(arr3, n);
}
main();

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
#    Python 3 program for
#    Smallest positive missing number in an array
class Missing :
	#  Display list elements
	def printArray(self, arr, n) :
		i = 0
		while (i < n) :
			print(" ", arr[i], end = "")
			i += 1
		
	
	def firstPositiveSmallest(self, arr, n) :
		if (n <= 0) :
			return
		
		#  Set initial value of auxiliary list
		#  False are indicate number is missing
		check = [False] * (n)
		i = 0
		while (i < n) :
			if (arr[i] > 0 and arr[i] <= n) :
				#  When number exist between 1 to n
				check[arr[i] - 1] = True
			
			i += 1
		
		result = 0
		#  This loop are executed until not find smallest missing number
		while (result < n and check[result] == True) :
			result += 1
		
		print("\n Array : ", end = "")
		self.printArray(arr, n)
		#  Display calculated result
		print("\n Result : ", (result + 1) ," ")
	

def main() :
	task = Missing()
	arr1 = [1, 2, -4, 5, -4, 3, -5]
	arr2 = [1, -3, 4, 0, 6, 2]
	arr3 = [3, 4, 1, 2]
	#  Get the size of lists
	l = len(arr1)
	m = len(arr2)
	n = len(arr3)
	#  Test A
	#   arr =  [1, 2, -4, 5, -4, 3, -5]
	#   [1,2,5,3]  Positive number
	#   ---------------------
	#   Smallest missing : 4
	task.firstPositiveSmallest(arr1, l)
	#  Test B
	#   arr =  [1, -3, 4, 0, 6, 2]
	#   [1,4,6,2]  Positive number
	#   ---------------------
	#   Smallest missing : 3
	task.firstPositiveSmallest(arr2, m)
	#  Test C
	#   arr =  [3,4, 1, 2]
	#   [3,4, 1, 2]  Positive number
	#   ---------------------
	#   Smallest missing : 5
	task.firstPositiveSmallest(arr3, n)

if __name__ == "__main__": main()

Output

 Array :   1  2  -4  5  -4  3  -5
 Result :  4

 Array :   1  -3  4  0  6  2
 Result :  3

 Array :   3  4  1  2
 Result :  5
#    Ruby program for
#    Smallest positive missing number in an array
class Missing 
	#  Display array elements
	def printArray(arr, n) 
		i = 0
		while (i < n) 
			print(" ", arr[i])
			i += 1
		end

	end

	def firstPositiveSmallest(arr, n) 
		if (n <= 0) 
			return
		end

		#  Set initial value of auxiliary array
		#  False are indicate number is missing
		check = Array.new(n) {false}
		i = 0
		while (i < n) 
			if (arr[i] > 0 && arr[i] <= n) 
				#  When number exist between 1 to n
				check[arr[i] - 1] = true
			end

			i += 1
		end

		result = 0
		#  This loop are executed until not find smallest missing number
		while (result < n && check[result] == true) 
			result += 1
		end

		print("\n Array : ")
		self.printArray(arr, n)
		#  Display calculated result
		print("\n Result : ", (result + 1) ," \n")
	end

end

def main() 
	task = Missing.new()
	arr1 = [1, 2, -4, 5, -4, 3, -5]
	arr2 = [1, -3, 4, 0, 6, 2]
	arr3 = [3, 4, 1, 2]
	#  Get the size of arrays
	l = arr1.length
	m = arr2.length
	n = arr3.length
	#  Test A
	#   arr =  [1, 2, -4, 5, -4, 3, -5]
	#   [1,2,5,3]  Positive number
	#   ---------------------
	#   Smallest missing : 4
	task.firstPositiveSmallest(arr1, l)
	#  Test B
	#   arr =  [1, -3, 4, 0, 6, 2]
	#   [1,4,6,2]  Positive number
	#   ---------------------
	#   Smallest missing : 3
	task.firstPositiveSmallest(arr2, m)
	#  Test C
	#   arr =  [3,4, 1, 2]
	#   [3,4, 1, 2]  Positive number
	#   ---------------------
	#   Smallest missing : 5
	task.firstPositiveSmallest(arr3, n)
end

main()

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4 

 Array :  1 -3 4 0 6 2
 Result : 3 

 Array :  3 4 1 2
 Result : 5 
/*
    Scala program for
    Smallest positive missing number in an array
*/
class Missing()
{
	// Display array elements
	def printArray(arr: Array[Int], n: Int): Unit = {
		var i: Int = 0;
		while (i < n)
		{
			print(" " + arr(i));
			i += 1;
		}
	}
	def firstPositiveSmallest(arr: Array[Int], n: Int): Unit = {
		if (n <= 0)
		{
			return;
		}
		// Set initial value of auxiliary array
		// False are indicate number is missing
		var check: Array[Boolean] = Array.fill[Boolean](n)(false);
		var i: Int = 0;
		while (i < n)
		{
			if (arr(i) > 0 && arr(i) <= n)
			{
				// When number exist between 1 to n
				check(arr(i) - 1) = true;
			}
			i += 1;
		}
		var result: Int = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check(result) == true)
		{
			result += 1;
		}
		print("\n Array : ");
		printArray(arr, n);
		// Display calculated result
		print("\n Result : " + (result + 1) + " \n");
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: Missing = new Missing();
		var arr1: Array[Int] = Array(1, 2, -4, 5, -4, 3, -5);
		var arr2: Array[Int] = Array(1, -3, 4, 0, 6, 2);
		var arr3: Array[Int] = Array(3, 4, 1, 2);
		// Get the size of arrays
		var l: Int = arr1.length;
		var m: Int = arr2.length;
		var n: Int = arr3.length;
		// Test A
		/*
		   arr =  [1, 2, -4, 5, -4, 3, -5]
		   [1,2,5,3]  Positive number
		   ---------------------
		   Smallest missing : 4
		*/
		task.firstPositiveSmallest(arr1, l);
		// Test B
		/*
		   arr =  [1, -3, 4, 0, 6, 2]
		   [1,4,6,2]  Positive number
		   ---------------------
		   Smallest missing : 3
		*/
		task.firstPositiveSmallest(arr2, m);
		// Test C
		/*
		   arr =  [3,4, 1, 2]
		   [3,4, 1, 2]  Positive number
		   ---------------------
		   Smallest missing : 5
		*/
		task.firstPositiveSmallest(arr3, n);
	}
}

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5
/*
    Swift 4 program for
    Smallest positive missing number in an array
*/
class Missing
{
	// Display array elements
	func printArray(_ arr: [Int], _ n: Int)
	{
		var i: Int = 0;
		while (i < n)
		{
			print(" ", arr[i], terminator: "");
			i += 1;
		}
	}
	func firstPositiveSmallest(_ arr: [Int], _ n: Int)
	{
		if (n <= 0)
		{
			return;
		}
		// Set initial value of auxiliary array
		// False are indicate number is missing
		var check: [Bool] = Array(repeating: false, count: n);
		var i: Int = 0;
		while (i < n)
		{
			if (arr[i] > 0 && arr[i] <= n)
			{
				// When number exist between 1 to n
				check[arr[i] - 1] = true;
			}
			i += 1;
		}
		var result: Int = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check[result] == true)
		{
			result += 1;
		}
		print("\n Array : ", terminator: "");
		self.printArray(arr, n);
		// Display calculated result
		print("\n Result : ", (result + 1) ," ");
	}
}
func main()
{
	let task: Missing = Missing();
	let arr1: [Int] = [1, 2, -4, 5, -4, 3, -5];
	let arr2: [Int] = [1, -3, 4, 0, 6, 2];
	let arr3: [Int] = [3, 4, 1, 2];
	// Get the size of arrays
	let l: Int = arr1.count;
	let m: Int = arr2.count;
	let n: Int = arr3.count;
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]
	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	task.firstPositiveSmallest(arr1, l);
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]
	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	task.firstPositiveSmallest(arr2, m);
	// Test C
	/*
	   arr =  [3,4, 1, 2]
	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	task.firstPositiveSmallest(arr3, n);
}
main();

Output

 Array :   1  2  -4  5  -4  3  -5
 Result :  4

 Array :   1  -3  4  0  6  2
 Result :  3

 Array :   3  4  1  2
 Result :  5
/*
    Kotlin program for
    Smallest positive missing number in an array
*/
class Missing
{
	// Display array elements
	fun printArray(arr: Array < Int > , n: Int): Unit
	{
		var i: Int = 0;
		while (i < n)
		{
			print(" " + arr[i]);
			i += 1;
		}
	}
	fun firstPositiveSmallest(arr: Array < Int > , n: Int): Unit
	{
		if (n <= 0)
		{
			return;
		}
		// Set initial value of auxiliary array
		// False are indicate number is missing
		val check: Array < Boolean > = Array(n)
		{
			false
		};
		var i: Int = 0;
		while (i < n)
		{
			if (arr[i] > 0 && arr[i] <= n)
			{
				// When number exist between 1 to n
				check[arr[i] - 1] = true;
			}
			i += 1;
		}
		var result: Int = 0;
		// This loop are executed until not find smallest missing number
		while (result < n && check[result] == true)
		{
			result += 1;
		}
		print("\n Array : ");
		this.printArray(arr, n);
		// Display calculated result
		print("\n Result : " + (result + 1) + " \n");
	}
}
fun main(args: Array < String > ): Unit
{
	val task: Missing = Missing();
	val arr1: Array < Int > = arrayOf(1, 2, -4, 5, -4, 3, -5);
	val arr2: Array < Int > = arrayOf(1, -3, 4, 0, 6, 2);
	val arr3: Array < Int > = arrayOf(3, 4, 1, 2);
	// Get the size of arrays
	val l: Int = arr1.count();
	val m: Int = arr2.count();
	val n: Int = arr3.count();
	// Test A
	/*
	   arr =  [1, 2, -4, 5, -4, 3, -5]
	   [1,2,5,3]  Positive number
	   ---------------------
	   Smallest missing : 4
	*/
	task.firstPositiveSmallest(arr1, l);
	// Test B
	/*
	   arr =  [1, -3, 4, 0, 6, 2]
	   [1,4,6,2]  Positive number
	   ---------------------
	   Smallest missing : 3
	*/
	task.firstPositiveSmallest(arr2, m);
	// Test C
	/*
	   arr =  [3,4, 1, 2]
	   [3,4, 1, 2]  Positive number
	   ---------------------
	   Smallest missing : 5
	*/
	task.firstPositiveSmallest(arr3, n);
}

Output

 Array :  1 2 -4 5 -4 3 -5
 Result : 4

 Array :  1 -3 4 0 6 2
 Result : 3

 Array :  3 4 1 2
 Result : 5




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment