📌  相关文章
📜  通过前一个和下一个相乘来替换每个数组元素

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

通过前一个和下一个相乘来替换每个数组元素

给定一个整数数组,用前一个元素和下一个元素相乘来更新每个元素,但有以下例外。
a) 第一个元素被替换为 first 和 second 的乘法。
b) 最后一个元素被最后一个和倒数第二个相乘替换。

例子:

Input: arr[] = {2, 3, 4, 5, 6}
Output: arr[] = {6, 8, 15, 24, 30}

// We get the above output using following
// arr[] = {2*3, 2*4, 3*5, 4*6, 5*6} 

资料来源:前 25 个面试问题
一个简单的解决方案是创建一个辅助数组,将给定数组的内容复制到辅助数组。最后遍历辅助数组并使用复制的值更新给定数组。该解决方案的时间复杂度为 O(n),但需要 O(n) 额外空间。
一个有效的解决方案可以在 O(n) 时间和 O(1) 空间内解决问题。这个想法是跟踪循环中的前一个元素。

下面是这个想法的实现。

C++
// C++ program to update every array element with
// multiplication of previous and next numbers in array
#include
using namespace std;
 
void modify(int arr[], int n)
{
    // Nothing to do when array size is 1
    if (n <= 1)
      return;
 
    // store current value of arr[0] and update it
    int prev = arr[0];
    arr[0] = arr[0] * arr[1];
 
    // Update rest of the array elements
    for (int i=1; i


Java
// Java program to update every array element with
// multiplication of previous and next numbers in array
import java.io.*;
import java.util.*;
import java.lang.Math;
 
class Multiply
{
   static void modify(int arr[], int n)
    {
        // Nothing to do when array size is 1
        if (n <= 1)
            return;
 
        // store current value of arr[0] and update it
        int prev = arr[0];
        arr[0] = arr[0] * arr[1];
 
        // Update rest of the array elements
        for (int i=1; i


Python3
# Python program to update every array element with
# multiplication of previous and next numbers in array
 
def modify(arr, n):
 
 # Nothing to do when array size is 1
    if n <= 1:
        return
 
    # store current value of arr[0] and update it
    prev = arr[0]
    arr[0] = arr[0] * arr[1]
 
    # Update rest of the array elements
    for i in range(1, n-1):
     
        # Store current value of next interaction
        curr = arr[i];
 
        # Update current value using previous value
        arr[i] = prev * arr[i+1]
 
           # Update previous value
        prev = curr
     
 
    # Update last array element
    arr[n-1] = prev * arr[n-1]
 
 
# Driver program
arr = [2, 3, 4, 5, 6]
n = len(arr)
modify(arr, n)
for i in range (0, n):
    print(arr[i],end=" ")
 
# This code is contributed by
# Smitha Dinesh Semwal


C#
// C# program to update every array
// element with multiplication of
// previous and next numbers in array
using System;
 
class GFG
{
    static void modify(int []arr, int n)
    {
        // Nothing to do when array size is 1
        if (n <= 1)
            return;
 
        // store current value of arr[0] and update it
        int prev = arr[0];
        arr[0] = arr[0] * arr[1];
 
        // Update rest of the array elements
        for (int i=1; i


PHP


Javascript


输出:

6 8 15 24 30