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++
// C++ program to replace two elements with equal// values with one greater.#include <bits/stdc++.h>using namespace std;// Function to replace consecutive equal // elementsvoid 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 Codeint 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 # elementsdef 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 Codearr = [ 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
<?php// PHP program to replace two // elements with equal// values with one greater.// Function to replace consecutive// equal elementsfunction 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.?> |
Javascript
<script>// JavaScript program to replace two elements with equal// values with one greater.// Function to replace consecutive equal// elementsfunction 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 Codelet arr = [6, 4, 3, 4, 3, 3, 5];let n = arr.lengthreplace_elements(arr, n);</script> |
6 4 3 6
Complexity Analysis:
- Time Complexity: O(N2)
- Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Find More on on that Topic: geeksforgeeks.org/replace-two-consecutive-equal-values-with-one-greater/ […]