例如,如果我们有一个数组 A ={1, 2 , 3, 4, 5} 并且我想找到 A[i] 和 A[i+k] 之间的最大元素。我可以使用 max 函数吗?我尝试使用它,但不能。请告诉我他们是否还有其他方法可以做到这一点。
我需要这样做
vector <int> max_of_subarrays(int *arr, int n, int k)
{
// your code here
vector<int> v;
for(int i=0; i<n+1-k; i++){
int result = arr[i];
v.push_back(max(result,arr+k));
}
return v;
Run Code Online (Sandbox Code Playgroud)
您可以使用std:max_element。它需要两个迭代器并返回一个迭代器到指定范围内的最大元素。您可以使用指向数组元素的指针,这样您就可以执行以下操作:
vector <int> max_of_subarrays(int *arr, int n, int k) {
vector<int> v;
for(int i=0; i<n+1-k; i++) {
v.push_back(*max_element(arr + i , arr + k + i));
}
return v;
}
Run Code Online (Sandbox Code Playgroud)