通过前一个和下一个相乘来替换每个数组元素
给定一个整数数组,用前一个元素和下一个元素相乘来更新每个元素,但有以下例外。
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