C++程序查找移除最大值后的数组
假设我们有一个包含n个元素的数组A和另一个值k。我们想要执行k次以下操作。一个操作如下:
设d为数组的最大值
对于从1到n的每个索引i,将A[i]替换为d - A[i]
我们需要找到最终序列。
问题类别
在数据结构中,数组是特定类型元素的有限集合。数组用于将相同类型的元素存储在连续的内存位置中。数组被分配一个特定的名称,并在各种编程语言中通过该名称进行引用。要访问数组的元素,需要索引。我们使用术语“name[i]”来访问数组“name”中位置“i”处的特定元素。各种数据结构,如堆栈、队列、堆、优先队列,都可以使用数组实现。数组上的操作包括插入、删除、更新、遍历、搜索和排序操作。请访问下面的链接以了解更多信息。
https://tutorialspoint.com/data_structures_algorithms/array_data_structure.htm
因此,如果我们问题的输入类似于A = [5, -1, 4, 2, 0];k = 19,则输出将为[0, 6, 1, 3, 5],因为d为5。
步骤
为了解决这个问题,我们将遵循以下步骤:
n := size of A m := -inf t := -inf for initialize i := 0, when i < n, update (increase i by 1), do: m := maximum of m and A[i] for initialize i := 0, when i < n, update (increase i by 1), do: A[i] := m - A[i] t := maximum of t and A[i] if k mod 2 is same as 1, then: for initialize i := 0, when i < n, update (increase i by 1), do: print A[i] Otherwise for initialize i := 0, when i < n, update (increase i by 1), do: A[i] := t - A[i] print A[i]
示例
让我们看看以下实现以更好地理解:
#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A, int k){
int n = A.size();
int m = -999;
int t = -999;
for (int i = 0; i < n; i++)
m = max(m, A[i]);
for (int i = 0; i < n; i++)
A[i] = m - A[i], t = max(t, A[i]);
if (k % 2 == 1)
for (int i = 0; i < n; i++)
cout << A[i] << ", ";
else
for (int i = 0; i < n; i++)
A[i] = t - A[i], cout << A[i] << ", ";
}
int main(){
vector<int> A = { 5, -1, 4, 2, 0 };
int k = 19;
solve(A, k);
}输入
{ 5, -1, 4, 2, 0 }, 19输出
0, 6, 1, 3, 5,
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP