# Minimum array elements to be changed to make it a Lucas Sequence

• Difficulty Level : Easy
• Last Updated : 12 Sep, 2022

Given an array with N distinct elements. The task is to find the minimum number of elements to be changed in the array such that, the array contains first N Lucas Sequence terms. Lucas terms may be present in any order in the array.

Examples

Input: arr[] = {29, 1, 3, 4, 5, 11, 18, 2}
Output: 1
Explanation: 5 must be changed to 7, to get first N(8) terms of Lucas Sequence. Hence, 1 change is required

Input: arr[] = {4, 2, 3, 1}
Output: 0
Explanation: All elements are already first N(4) terms in Lucas sequence.

Approach:

• Insert first N(size of input array) Lucas Sequence terms in a set.
• Traverse array from left to right and check if array element is present in the set.
• If it is present that remove it from the set.
• Minimum changes required is the size of the final remaining set.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the minimum number``// of elements to be changed in the array``// to make it a Lucas Sequence``#include ``using` `namespace` `std;` `// Function that finds minimum changes to``// be made in the array``int` `lucasArray(``int` `arr[], ``int` `N)``{``    ``set<``int``> s;` `    ``// a and b are first two``    ``// lucas numbers``    ``int` `a = 2, b = 1;``    ``int` `c;` `    ``// insert first n lucas elements to set``    ``s.insert(a);``    ``if` `(N >= 2)``        ``s.insert(b);` `    ``for` `(``int` `i = 0; i < N - 2; i++) {``        ``s.insert(a + b);``        ``c = a + b;``        ``a = b;``        ``b = c;``    ``}` `    ``set<``int``>::iterator it;``    ``for` `(``int` `i = 0; i < N; i++) {``        ``// if lucas element is present in array,``        ``// remove it from set``        ``it = s.find(arr[i]);``        ``if` `(it != s.end())``            ``s.erase(it);``    ``}` `    ``// return the remaining number of``    ``// elements in the set``    ``return` `s.size();``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 7, 11, 22, 4, 2, 1, 8, 9 };``    ``int` `N = ``sizeof``(arr) / ``sizeof``(arr);` `    ``// Function Call``    ``cout << lucasArray(arr, N);` `    ``return` `0;``}`

## Java

 `// Java program to find the minimum number``// of elements to be changed in the array``// to make it a Lucas Sequence``import` `java.util.HashSet;``import` `java.util.Set;` `class` `GfG {` `    ``// Function that finds minimum changes``    ``// to be made in the array``    ``static` `int` `lucasArray(``int` `arr[], ``int` `n)``    ``{``        ``HashSet s = ``new` `HashSet<>();` `        ``// a and b are first two lucas numbers``        ``int` `a = ``2``, b = ``1``, c;` `        ``// insert first n lucas elements to set``        ``s.add(a);``        ``if` `(n >= ``2``)``            ``s.add(b);` `        ``for` `(``int` `i = ``0``; i < n - ``2``; i++) {``            ``s.add(a + b);``            ``c = a + b;``            ``a = b;``            ``b = c;``        ``}` `        ``for` `(``int` `i = ``0``; i < n; i++) {``            ``// if lucas element is present in array,``            ``// remove it from set``            ``if` `(s.contains(arr[i]))``                ``s.remove(arr[i]);``        ``}` `        ``// return the remaining number of``        ``// elements in the set``        ``return` `s.size();``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``int` `arr[] = { ``7``, ``11``, ``22``, ``4``, ``2``, ``1``, ``8``, ``9` `};``        ``int` `n = arr.length;` `        ``System.out.println(lucasArray(arr, n));``    ``}``}` `// This code is contributed by Rituraj Jain`

## Python3

 `# Python 3 program to find the minimum number``# of elements to be changed in the array``# to make it a Lucas Sequence` `# Function that finds minimum changes to``# be made in the array`  `def` `lucasArray(arr, n):``    ``s ``=` `set``()` `    ``# a and b are first two``    ``# lucas numbers``    ``a ``=` `2``    ``b ``=` `1` `    ``# insert first n lucas elements to set``    ``s.add(a)``    ``if` `(n >``=` `2``):``        ``s.add(b)` `    ``for` `i ``in` `range``(n ``-` `2``):``        ``s.add(a ``+` `b)``        ``c ``=` `a ``+` `b``        ``a ``=` `b``        ``b ``=` `c` `    ``for` `i ``in` `range``(n):` `        ``# if lucas element is present in array,``        ``# remove it from set``        ``if` `(arr[i] ``in` `s):``            ``s.remove(arr[i])` `    ``# return the remaining number of``    ``# elements in the set``    ``return` `len``(s)`  `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``arr ``=` `[``7``, ``11``, ``22``, ``4``, ``2``, ``1``, ``8``, ``9``]``    ``n ``=` `len``(arr)` `    ``print``(lucasArray(arr, n))` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# program to find the minimum number``// of elements to be changed in the array``// to make it a Lucas Sequence``using` `System;``using` `System.Collections.Generic;` `class` `GFG {` `    ``// Function that finds minimum changes``    ``// to be made in the array``    ``static` `int` `lucasArray(``int``[] arr, ``int` `n)``    ``{``        ``HashSet<``int``> s = ``new` `HashSet<``int``>();` `        ``// a and b are first two lucas numbers``        ``int` `a = 2, b = 1, c;` `        ``// insert first n lucas elements to set``        ``s.Add(a);``        ``if` `(n >= 2)``            ``s.Add(b);` `        ``for` `(``int` `i = 0; i < n - 2; i++) {``            ``s.Add(a + b);``            ``c = a + b;``            ``a = b;``            ``b = c;``        ``}` `        ``for` `(``int` `i = 0; i < n; i++) {``            ``// if lucas element is present in array,``            ``// remove it from set``            ``if` `(s.Contains(arr[i]))``                ``s.Remove(arr[i]);``        ``}` `        ``// return the remaining number of``        ``// elements in the set``        ``return` `s.Count;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{` `        ``int``[] arr = { 7, 11, 22, 4, 2, 1, 8, 9 };``        ``int` `n = arr.Length;` `        ``Console.WriteLine(lucasArray(arr, n));``    ``}``}` `// This code is contributed by PrinciRaj1992`

## Javascript

 ``

Output

`3`

Complexity Analysis:

• Time Complexity: O(N * log(N))
• Auxiliary Space: O(N)

My Personal Notes arrow_drop_up