# Replace two consecutive equal values with one greater

You are given an array of size ‘n’. You have to replace every pair of consecutive values ‘x’ by a single value ‘x+1’ every time until there is no such repetition left and then print the new array.

Example:

Input : 5, 2, 1, 1, 2, 2
Output : 5 4
Explanation:

• step 1: While traversing, encountered pair of 1(gets replaced by 2. We get 5, 2, 2, 2, 2
• step 2: The first encountered pair of 2 gets replaced by 3. We get 5, 3, 2, 2
• step 3: Again pair of 2 gets replaced by 3. We get 5, 3, 3
• step 4: Recently formed pair of 3 gets replaced by 4. We get 5, 4

Input : 4, 5, 11, 2, 5, 7, 2
Output : 4 5 11 2 5 7 2

Approach : In this problem you have to traverse the array of integers and check if any two consecutive integers are of a same value X. Then you have to replace that pair of integers with a single integer X+1. After that you have to begin with a new step by re-traversing the array and performing the same operation.

Implementation:

## C++

 `// C++ program to replace two elements with equal``// values with one greater.``#include ``using` `namespace` `std;` `// Function to replace consecutive equal ``// elements``void` `replace_elements(``int` `arr[], ``int` `n)``{``    ``int` `pos = 0;  ``// Index in result` `    ``for` `(``int` `i = 0; i < n; i++) {``        ``arr[pos++] = arr[i];` `        ``while` `(pos > 1 && arr[pos - 2] == ``                          ``arr[pos - 1]) {``            ``pos--;``            ``arr[pos - 1]++;``        ``}``    ``}` `    ``// to print new array``    ``for` `(``int` `i = 0; i < pos; i++)``        ``cout << arr[i] << ``" "``;``}` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 6, 4, 3, 4, 3, 3, 5 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(``int``);``    ``replace_elements(arr, n);``    ``return` `0;``}`

## Java

 `// java program to replace two elements``// with equal values with one greater.``public` `class` `GFG {``    ` `    ``// Function to replace consecutive equal ``    ``// elements``    ``static` `void` `replace_elements(``int` `arr[], ``int` `n)``    ``{``        ``int` `pos = ``0``; ``// Index in result``    ` `        ``for` `(``int` `i = ``0``; i < n; i++) {``            ``arr[pos++] = arr[i];``    ` `            ``while` `(pos > ``1` `&& arr[pos - ``2``] == ``                                  ``arr[pos - ``1``])``            ``{``                ``pos--;``                ``arr[pos - ``1``]++;``            ``}``        ``}``    ` `        ``// to print new array``        ``for` `(``int` `i = ``0``; i < pos; i++)``            ``System.out.print( arr[i] + ``" "``);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = { ``6``, ``4``, ``3``, ``4``, ``3``, ``3``, ``5` `};``        ``int` `n = arr.length;``        ``replace_elements(arr, n);``    ``}``}` `// This code is contributed by Sam007`

## Python3

 `# python program to replace two elements``# with equal values with one greater.``from` `__future__ ``import` `print_function` `# Function to replace consecutive equal ``# elements``def` `replace_elements(arr, n):` `    ``pos ``=` `0` `# Index in result` `    ``for` `i ``in` `range``(``0``, n):``        ``arr[pos] ``=` `arr[i]``        ``pos ``=` `pos ``+` `1``        ``while` `(pos > ``1` `and` `arr[pos ``-` `2``]``                        ``=``=` `arr[pos ``-` `1``]):``            ``pos ``-``=` `1``            ``arr[pos ``-` `1``] ``+``=` `1``        ` `    ``# to print new array``    ``for` `i ``in` `range``(``0``, pos):``        ``print``(arr[i], end``=``" "``)` `# Driver Code``arr ``=` `[ ``6``, ``4``, ``3``, ``4``, ``3``, ``3``, ``5` `]``n ``=` `len``(arr)``replace_elements(arr, n)``    ` `# This code is contributed by Sam007`

## C#

 `// C# program to replace two elements``// with equal values with one greater.``using` `System;` `class` `GFG {``    ` `    ``// Function to replace consecutive equal ``    ``// elements``    ``static` `void` `replace_elements(``int` `[]arr, ``int` `n)``    ``{``        ``int` `pos = 0; ``// Index in result``     ` `        ``for` `(``int` `i = 0; i < n; i++) {``            ``arr[pos++] = arr[i];``     ` `            ``while` `(pos > 1 && arr[pos - 2] == ``                                  ``arr[pos - 1])``            ``{``                ``pos--;``                ``arr[pos - 1]++;``            ``}``        ``}``     ` `        ``// to print new array``        ``for` `(``int` `i = 0; i < pos; i++)``            ``Console.Write( arr[i] + ``" "``);``    ``}` `    ``// Driver code``    ``static` `void` `Main()``    ``{``        ``int` `[]arr = { 6, 4, 3, 4, 3, 3, 5 };``        ``int` `n = arr.Length;``        ``replace_elements(arr, n);``    ``}``}` `// This code is contributed by Sam007`

## PHP

 ` 1 && ``\$arr``[``\$pos` `- 2] == ``                        ``\$arr``[``\$pos` `- 1])``        ``{``            ``\$pos``--;``            ``\$arr``[``\$pos` `- 1]++;``        ``}``    ``}` `    ``// to print new array``    ``for` `(``\$i` `= 0; ``\$i` `< ``\$pos``; ``\$i``++)``        ``echo` `\$arr``[``\$i``] . ``" "``;``}` `    ``// Driver Code``    ``\$arr` `= ``array``(6, 4, 3, 4, 3, 3, 5);``    ``\$n` `= ``count``(``\$arr``);``    ``replace_elements(``\$arr``, ``\$n``);` `// This code is contributed by Sam007.``?>`

## Javascript

 ``

Output
`6 4 3 6 `

Complexity Analysis:

• Time Complexity: O(N2)
• Auxiliary Space: O(1)

Previous
Next