📌  相关文章
📜  用左侧最小的元素替换每个元素

📅  最后修改于: 2022-05-13 01:57:06.211000             🧑  作者: Mango

用左侧最小的元素替换每个元素

给定一个整数数组,任务是将每个元素替换为其左侧的最小元素。
注意:将第一个元素替换为 -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

方法:

  1. 维护一个变量 min_ele ,它将存储最小的元素。
  2. 最初, min_ele 将等于第 0 个索引处的元素。
  3. 首先将 arr[0] 替换为 -1 然后遍历数组
  4. 然后用 min_ele 值替换元素,如果元素小于 min_ele,则更新 min_ele。
  5. 打印修改后的数组。

下面是上述方法的实现:

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)