系统会为您提供一个大小为’n’的数组。您每次都必须用单个值“ x + 1”替换每对连续值“ x”,直到不再有此类重复为止,然后打印新数组。
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
方法:在此问题中,您必须遍历整数数组并检查是否有两个连续的整数具有相同的值X。然后必须用单个整数X + 1替换该对整数。之后,您必须通过重新遍历数组并执行相同的操作来开始新的步骤。
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.
?>
输出:
6 4 3 6