假设我们有一个包含n个元素的数组A和另一个值k。我们想要执行k个操作。一个操作的形式如下:
假设d是数组的最大值
对于从1到n的每个索引i,将A[i]替换为d - A[i]
我们需要找到最终的序列。
数据结构中的数组是一组特定类型的有限元素集合。数组被用作 在连续的内存位置中存储相同类型的元素。一个数组被分配了 特定名称,并且在各种编程语言中通过该名称进行引用 访问数组的元素,需要索引。我们使用术语“name[i]”来 访问数组'name'中位于位置'i'的特定元素。各种数据结构 如栈、队列、堆、优先级队列都可以使用数组来实现。操作于 数组包括插入、删除、更新、遍历、搜索和排序操作。访问 下面的链接用于进一步阅读。
https://www.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,
以上是C++程序:在删除最大值后找到数组 C++程序用于在删除最大值后找到数组的详细内容。更多信息请关注PHP中文网其他相关文章!