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
This is our required answer.
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++ program to replace two elements with equal // values with one greater. #include <bits/stdc++.h> 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 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 |
# 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# 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 // PHP program to replace two // elements with equal // values with one greater. // Function to replace consecutive // equal elements function replace_elements( $arr , $n )
{ // Index in result
$pos = 0;
for ( $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 ( $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. ?> |
<script> // JavaScript program to replace two elements with equal // values with one greater. // Function to replace consecutive equal // elements function replace_elements(arr, n) {
let pos = 0; // Index in result
for (let 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 (let i = 0; i < pos; i++)
document.write(arr[i] + " " );
} // Driver Code let arr = [6, 4, 3, 4, 3, 3, 5]; let n = arr.length replace_elements(arr, n); </script> |
6 4 3 6
Complexity Analysis:
- Time Complexity: O(N2)
- Auxiliary Space: O(1)