# Remove all the fibonacci numbers from the given array

Given an array arr[] of N integers, the task is to remove all the fibonacci numbers present in the array.

Examples:

Input: arr[] = {4, 6, 5, 3, 8, 7, 10, 11, 14, 15}
Output: 4 6 7 10 11 14 15
Explanation:
The array contains 3 fibonacci data values 5, 3 and 8.
These values have been removed from the array.

Input: arr[] = {2, 4, 7, 8, 9, 11}
Output: 4 7 9 11
Explanation:
The array contains 2 fibonacci data values 2 and 8.
These values have been removed from the array.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: The idea is to use hashing to precompute and store the Fibonacci numbers, and then check if a node contains a Fibonacci value in O(1) time.

1. Traverse the array and check if the current number is a Fibonacci or not using the precomputed hash.
2. If it is, then left shift all the elements after it to remove this Fibonacci number and decrease the value of the array length.
3. Repeat the above steps for all the elements of the array.

Below is the implementation of the above approach:

## C++

 `// C++ program to remove all the ` `// fibonacci numbers from the ` `// given array ` ` `  `#include ` `using` `namespace` `std; ` ` `  `const` `int` `sz = 1e3; ` ` `  `// Set to store all the Fibonacci numbers ` `set<``int``> fib; ` ` `  `// Function to generate Fibonacci numbers using ` `// Dynamic Programming and create hash table ` `// to check Fibonacci numbers ` `void` `fibonacci() ` `{ ` `    ``// Storing the first two Fibonacci ` `    ``// numbers in the set ` `    ``int` `prev = 0, curr = 1, len = 2; ` `    ``fib.insert(prev); ` `    ``fib.insert(curr); ` ` `  `    ``// Compute the remaining Fibonacci numbers ` `    ``// until the max size and store them ` `    ``// in the set ` `    ``while` `(len <= sz) { ` `        ``int` `temp = curr + prev; ` `        ``fib.insert(temp); ` `        ``prev = curr; ` `        ``curr = temp; ` `        ``len++; ` `    ``} ` `} ` ` `  `// Function to print the elements of the array ` `void` `printArray(``int` `arr[], ``int` `len) ` `{ ` `    ``for` `(``int` `i = 0; i < len; i++) { ` `        ``cout << arr[i] << ``' '``; ` `    ``} ` `} ` ` `  `// Function to remove all the Fibonacci numbers ` `// from the array ` `void` `removeFibonacci(``int` `arr[], ``int` `len) ` `{ ` `    ``// Creating a set containing ` `    ``// all the fibonacci numbers ` `    ``fibonacci(); ` ` `  `    ``// Traverse the array ` `    ``for` `(``int` `i = 0; i < len; i++) { ` ` `  `        ``// If the current element is fibonacci ` `        ``if` `(fib.find(arr[i]) != fib.end()) { ` ` `  `            ``// Shift all the elements on the ` `            ``// right of it to the left ` `            ``for` `(``int` `j = i; j < len; j++) { ` `                ``arr[j] = arr[j + 1]; ` `            ``} ` ` `  `            ``// Decrease the loop counter by 1 ` `            ``// to check the shifted element ` `            ``i--; ` ` `  `            ``// Decrease the length ` `            ``len--; ` `        ``} ` `    ``} ` ` `  `    ``// Print the updated array ` `    ``printArray(arr, len); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 4, 6, 5, 3, 8, 7, ` `                  ``10, 11, 14, 15 }; ` ` `  `    ``int` `len = ``sizeof``(arr) / ``sizeof``(``int``); ` ` `  `    ``removeFibonacci(arr, len); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to remove all the ` `// fibonacci numbers from the ` `// given array ` `import` `java.util.*; ` ` `  `class` `GFG{ ` `  `  `static` `int` `sz = (``int``) 1e3; ` `  `  `// Set to store all the Fibonacci numbers ` `static` `HashSet fib = ``new` `HashSet(); ` `  `  `// Function to generate Fibonacci numbers using ` `// Dynamic Programming and create hash table ` `// to check Fibonacci numbers ` `static` `void` `fibonacci() ` `{ ` `    ``// Storing the first two Fibonacci ` `    ``// numbers in the set ` `    ``int` `prev = ``0``, curr = ``1``, len = ``2``; ` `    ``fib.add(prev); ` `    ``fib.add(curr); ` `  `  `    ``// Compute the remaining Fibonacci numbers ` `    ``// until the max size and store them ` `    ``// in the set ` `    ``while` `(len <= sz) { ` `        ``int` `temp = curr + prev; ` `        ``fib.add(temp); ` `        ``prev = curr; ` `        ``curr = temp; ` `        ``len++; ` `    ``} ` `} ` `  `  `// Function to print the elements of the array ` `static` `void` `printArray(``int` `arr[], ``int` `len) ` `{ ` `    ``for` `(``int` `i = ``0``; i < len; i++) { ` `        ``System.out.print(arr[i] +``" "``); ` `    ``} ` `} ` `  `  `// Function to remove all the Fibonacci numbers ` `// from the array ` `static` `void` `removeFibonacci(``int` `arr[], ``int` `len) ` `{ ` `    ``// Creating a set containing ` `    ``// all the fibonacci numbers ` `    ``fibonacci(); ` `  `  `    ``// Traverse the array ` `    ``for` `(``int` `i = ``0``; i < len; i++) { ` `  `  `        ``// If the current element is fibonacci ` `        ``if` `(fib.contains(arr[i])) { ` `  `  `            ``// Shift all the elements on the ` `            ``// right of it to the left ` `            ``for` `(``int` `j = i; j < len - ``1``; j++) { ` `                ``arr[j] = arr[j + ``1``]; ` `            ``} ` `  `  `            ``// Decrease the loop counter by 1 ` `            ``// to check the shifted element ` `            ``i--; ` `  `  `            ``// Decrease the length ` `            ``len--; ` `        ``} ` `    ``} ` `  `  `    ``// Print the updated array ` `    ``printArray(arr, len); ` `} ` `  `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `arr[] = { ``4``, ``6``, ``5``, ``3``, ``8``, ``7``, ` `                  ``10``, ``11``, ``14``, ``15` `}; ` `  `  `    ``int` `len = arr.length; ` `    ``removeFibonacci(arr, len); ` `} ` `} ` ` `  `// This code is contributed by 29AjayKumar `

## Python3

 `# Python 3 program to remove all the ` `# fibonacci numbers from the ` `# given array ` ` `  `sz ``=` `1000` ` `  `# Set to store all the Fibonacci numbers ` `fib ``=` `set``() ` ` `  `# Function to generate Fibonacci numbers using ` `# Dynamic Programming and create hash table ` `# to check Fibonacci numbers ` `def` `fibonacci(): ` ` `  `    ``# Storing the first two Fibonacci ` `    ``# numbers in the set ` `    ``prev , curr , length ``=` `0` `, ``1``, ``2` `    ``fib.add(prev) ` `    ``fib.add(curr) ` ` `  `    ``# Compute the remaining Fibonacci numbers ` `    ``# until the max size and store them ` `    ``# in the set ` `    ``while` `(length <``=` `sz): ` `        ``temp ``=` `curr ``+` `prev ` `        ``fib.add(temp) ` `        ``prev ``=` `curr ` `        ``curr ``=` `temp ` `        ``length ``+``=` `1` ` `  `# Function to print the elements of the array ` `def` `printArray( arr, length): ` ` `  `    ``for` `i ``in` `range``(length): ` `        ``print``(arr[i],end``=``" "``) ` `         `  `# Function to remove all the Fibonacci numbers ` `# from the array ` `def` `removeFibonacci( arr, length): ` ` `  `    ``# Creating a set containing ` `    ``# all the fibonacci numbers ` `    ``fibonacci() ` ` `  `    ``# Traverse the array ` `    ``for` `i ``in` `fib: ` `        ``if` `i ``in` `arr: ` `            ``arr.remove(i) ` `            ``length ``-``=` `1` ` `  `    ``# Print the updated array ` `    ``printArray(arr, length) ` ` `  `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: ` `     `  `    ``arr ``=` `[ ``4``, ``6``, ``5``, ``3``, ``8``, ``7``, ` `                ``10``, ``11``, ``14``, ``15` `] ` ` `  `    ``length ``=` `len``(arr) ` `    ``removeFibonacci(arr, length) ` ` `  `# This code is contributed by chitranayal `

## C#

 `// C# program to remove all the ` `// fibonacci numbers from the ` `// given array ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG{ ` `   `  `static` `int` `sz = (``int``) 1e3; ` `   `  `// Set to store all the Fibonacci numbers ` `static` `HashSet<``int``> fib = ``new` `HashSet<``int``>(); ` `   `  `// Function to generate Fibonacci numbers using ` `// Dynamic Programming and create hash table ` `// to check Fibonacci numbers ` `static` `void` `fibonacci() ` `{ ` `    ``// Storing the first two Fibonacci ` `    ``// numbers in the set ` `    ``int` `prev = 0, curr = 1, len = 2; ` `    ``fib.Add(prev); ` `    ``fib.Add(curr); ` `   `  `    ``// Compute the remaining Fibonacci numbers ` `    ``// until the max size and store them ` `    ``// in the set ` `    ``while` `(len <= sz) { ` `        ``int` `temp = curr + prev; ` `        ``fib.Add(temp); ` `        ``prev = curr; ` `        ``curr = temp; ` `        ``len++; ` `    ``} ` `} ` `   `  `// Function to print the elements of the array ` `static` `void` `printArray(``int` `[]arr, ``int` `len) ` `{ ` `    ``for` `(``int` `i = 0; i < len; i++) { ` `        ``Console.Write(arr[i] +``" "``); ` `    ``} ` `} ` `   `  `// Function to remove all the Fibonacci numbers ` `// from the array ` `static` `void` `removeFibonacci(``int` `[]arr, ``int` `len) ` `{ ` `    ``// Creating a set containing ` `    ``// all the fibonacci numbers ` `    ``fibonacci(); ` `   `  `    ``// Traverse the array ` `    ``for` `(``int` `i = 0; i < len; i++) { ` `   `  `        ``// If the current element is fibonacci ` `        ``if` `(fib.Contains(arr[i])) { ` `   `  `            ``// Shift all the elements on the ` `            ``// right of it to the left ` `            ``for` `(``int` `j = i; j < len - 1; j++) { ` `                ``arr[j] = arr[j + 1]; ` `            ``} ` `   `  `            ``// Decrease the loop counter by 1 ` `            ``// to check the shifted element ` `            ``i--; ` `   `  `            ``// Decrease the length ` `            ``len--; ` `        ``} ` `    ``} ` `   `  `    ``// Print the updated array ` `    ``printArray(arr, len); ` `} ` `   `  `// Driver code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``int` `[]arr = { 4, 6, 5, 3, 8, 7, ` `                  ``10, 11, 14, 15 }; ` `   `  `    ``int` `len = arr.Length; ` `    ``removeFibonacci(arr, len); ` `} ` `} ` ` `  `// This code is contributed by 29AjayKumar `

Output:

```4 6 7 10 11 14 15
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : 29AjayKumar, chitranayal