用左侧最小的元素替换每个元素
给定一个整数数组,任务是将每个元素替换为其左侧的最小元素。
注意:将第一个元素替换为 -1,因为它的左侧没有元素。
例子:
Input: arr[] = {4, 5, 2, 1, 7, 6}
Output: -1 4 4 2 1 1
Since, 4 has no element in its left, so replace it by -1.
For 5, 4 is the smallest element in its left.
For 2, 4 is the smallest element in its left.
For 1, 2 is the smallest element in its left.
For 7, 1 is the smallest element in its left.
For 6, 1 is the smallest element in its left.
Input: arr[] = {3, 2, 5, 7, 1}
Output: -1 3 2 2 2
方法:
- 维护一个变量 min_ele ,它将存储最小的元素。
- 最初, min_ele 将等于第 0 个索引处的元素。
- 首先将 arr[0] 替换为 -1 然后遍历数组
- 然后用 min_ele 值替换元素,如果元素小于 min_ele,则更新 min_ele。
- 打印修改后的数组。
下面是上述方法的实现:
C++
// C++ program to Replace every
// element with the smaller element
// on its left side
#include
using namespace std;
// Function to replace the elements
void ReplaceElements(int arr[], int n)
{
// MIN value initialised
// to element at 0th index
int min_ele = arr[0];
arr[0] = -1;
for (int i = 1; i < n; ++i) {
// If min_ele is smaller than arr[i]
// then just replace arr[i] with min_ele
if (min_ele < arr[i])
arr[i] = min_ele;
// Else if update the min_ele also
else if (min_ele >= arr[i]) {
int temp = arr[i];
arr[i] = min_ele;
min_ele = temp;
}
}
}
// Driver code
int main()
{
int arr[] = { 4, 5, 2, 1, 7, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
// Replace the elements
// with the smaller element
// on its left side
ReplaceElements(arr, n);
// Print the modified array
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
return 0;
}
Java
// Java program to Replace every
// element with the smaller element
// on its left side
class GFG {
// Function to replace the elements
static void ReplaceElements(int arr[], int n) {
// MIN value initialised
// to element at 0th index
int min_ele = arr[0];
arr[0] = -1;
for (int i = 1; i < n; ++i) {
// If min_ele is smaller than arr[i]
// then just replace arr[i] with min_ele
if (min_ele < arr[i]) {
arr[i] = min_ele;
} // Else if update the min_ele also
else if (min_ele >= arr[i]) {
int temp = arr[i];
arr[i] = min_ele;
min_ele = temp;
}
}
}
// Driver code
public static void main(String[] args) {
int arr[] = {4, 5, 2, 1, 7, 6};
int n = arr.length;
// Replace the elements
// with the smaller element
// on its left side
ReplaceElements(arr, n);
// Print the modified array
for (int i = 0; i < n; ++i) {
System.out.print(arr[i] + " ");
}
}
}
// This code is contributed by Rajput-JI
Python3
# Python3 program to Replace every
# element with the smaller element
# on its left side
# Function to replace the elements
def ReplaceElements(arr, n):
# MIN value initialised
# to element at 0th index
min_ele = arr[0]
arr[0] = -1
for i in range(1, n):
# If min_ele is smaller than arr[i]
# then just replace arr[i] with min_ele
if (min_ele < arr[i]):
arr[i] = min_ele
# Else if update the min_ele also
elif (min_ele >= arr[i]) :
temp = arr[i]
arr[i] = min_ele
min_ele = temp
# Driver code
if __name__ == "__main__":
arr = [ 4, 5, 2, 1, 7, 6 ]
n = len (arr)
# Replace the elements
# with the smaller element
# on its left side
ReplaceElements(arr, n)
# Print the modified array
for i in range( n):
print (arr[i], end = " ")
# This code is contributed
# by ChitraNayal
C#
// C# program to Replace every
// element with the smaller element
// on its left side
using System;
public class GFG {
// Function to replace the elements
static void ReplaceElements(int []arr, int n) {
// MIN value initialised
// to element at 0th index
int min_ele = arr[0];
arr[0] = -1;
for (int i = 1; i < n; ++i) {
// If min_ele is smaller than arr[i]
// then just replace arr[i] with min_ele
if (min_ele < arr[i]) {
arr[i] = min_ele;
} // Else if update the min_ele also
else if (min_ele >= arr[i]) {
int temp = arr[i];
arr[i] = min_ele;
min_ele = temp;
}
}
}
// Driver code
public static void Main() {
int []arr = {4, 5, 2, 1, 7, 6};
int n = arr.Length;
// Replace the elements
// with the smaller element
// on its left side
ReplaceElements(arr, n);
// Print the modified array
for (int i = 0; i < n; ++i) {
Console.Write(arr[i] + " ");
}
}
}
// This code is contributed by Rajput-JI
PHP
= $arr[$i])
{
$temp = $arr[$i];
$arr[$i] = $min_ele;
$min_ele = $temp;
}
}
return $arr;
}
// Driver code
$arr = array(4, 5, 2, 1, 7, 6);
$n = sizeof($arr);
// Replace the elements
// with the smaller element
// on its left side
$arr1 = ReplaceElements($arr, $n);
// Print the modified array
for ($i = 0; $i < $n; ++$i)
echo $arr1[$i] . " ";
// This code is contributed
// by Akanksha Rai
?>
Javascript
输出:
-1 4 4 2 1 1
时间复杂度: O(N)