用所有其他元素的总和替换数组的每个元素
给定一个大小为 N 的数组,任务是找到加密的数组。加密数组是通过将原始数组的每个元素替换为剩余数组元素的总和来获得的,即
For every i,
arr[i] = sumOfArrayElements – arr[i]
例子:
Input: arr[] = {5, 1, 3, 2, 4}
Output: 10 14 12 13 11
Original array {5, 1, 3, 2, 4}
Encrypted array is obtained as:
= {1+3+2+4, 5+3+2+4, 5+1+2+4, 5+1+3+4, 5+1+3+2}
= {10, 14, 12, 13, 11}
Each element of original array is replaced by the
sum of the remaining array elements.
Input: arr[] = {6, 8, 32, 12, 14, 10, 25 }
Output: 101 99 75 95 93 97 82
这个问题类似于 Find original array from encrypted array (An array of sum of other elements)。
方法:
- 求数组所有元素的总和。
- 遍历数组并将arr[i]替换为sum-arr[i] 。
C++
// C++ implementation to find encrypted array
// from the original array
#include
using namespace std;
// Finds and prints the elements of the encrypted
// array
void findEncryptedArray(int arr[], int n)
{
// total sum of elements
// of original array
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
// calculating and displaying
// elements of encrypted array
for (int i = 0; i < n; i++)
cout << (sum - arr[i]) << " ";
}
// Driver program
int main()
{
int arr[] = { 5, 1, 3, 2, 4 };
int N = sizeof(arr) / sizeof(arr[0]);
findEncryptedArray(arr, N);
return 0;
}
Java
// Java implementation to find encrypted
// array from the original array
class GFG {
// Finds and prints the elements
// of the encrypted array
static void findEncryptedArray(int arr[], int n)
{
// total sum of elements
// of original array
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
// calculating and displaying
// elements of encrypted array
for (int i = 0; i < n; i++)
System.out.print(sum - arr[i] + " ");
}
// Driver program
public static void main(String[] args)
{
int arr[] = { 5, 1, 3, 2, 4 };
int N = arr.length;
findEncryptedArray(arr, N);
}
}
Python 3
# Python 3 implementation
# to find encrypted array
# from the original array
# Finds and prints the elements
# of the encrypted array
def findEncryptedArray(arr, n) :
sum = 0
# total sum of elements
# of original array
for i in range(n) :
sum += arr[i]
# calculating and displaying
# elements of encrypted array
for i in range(n) :
print(sum - arr[i], end = " ")
# Driver Code
if __name__ == "__main__" :
arr = [ 5, 1, 3, 2, 4]
N = len(arr)
# function calling
findEncryptedArray(arr, N)
# This code is contributed by ANKITRAI1
C#
// C# implementation to find
// encrypted array from the
// original array
using System;
class GFG
{
// Finds and prints the elements
// of the encrypted array
static void findEncryptedArray(int []arr,
int n)
{
// total sum of elements
// of original array
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
// calculating and displaying
// elements of encrypted array
for (int i = 0; i < n; i++)
Console.Write(sum - arr[i] + " ");
}
// Driver Code
public static void Main()
{
int []arr = { 5, 1, 3, 2, 4 };
int N = arr.Length;
findEncryptedArray(arr, N);
}
}
// This code is contributed
// by inder_verma.
PHP
Javascript
输出:
10 14 12 13 11
时间复杂度: O(n)