C++中求解k為最大元素的非重疊子陣列長度最大和
在這個問題中,我們給定一個數組和一個整數k。我們的任務是建立一個程式,在C++中找到k作為最大元素的非重疊子陣列長度的最大和。
問題描述 − 在這裡,我們有一個數組和一個整數k。我們必須找到可以從此陣列建立的所有可能的非重疊子陣列。並將所有建立的子陣列的長度相加。
讓我們舉個例子來理解這個問題:
輸入 − array = {3, 7, 1, 2, 3, 1, 6, 3, 2, 5} k = 3
輸出 − 7
解釋 − 最大元素為3的非重疊子陣列
{3} : length = 1
{1, 2, 3, 1} : length = 4
{3, 2} : length = 2
Sum of length = 1+4+2 = 7為了解決這個問題,我們將遍歷陣列並找到所有小於k的元素,並維護一個長度,如果子陣列(元素流)包含k,則將長度新增到總和。
示例
程式說明了解決方案的工作原理:
#include <iostream>
using namespace std;
int subArrayLengthSum(int arr[], int n, int k){
int lengthSum = 0;
int subarrayLength = 0;
int flag = 0;
for (int i = 0; i < n;) {
subarrayLength = 0;
flag = 0;
while (arr[i] <= k && i < n) {
subarrayLength++;
if (arr[i] == k)
flag = 1;
i++;
}
if (flag == 1)
lengthSum += subarrayLength;
while (arr[i] > k && i < n)
i++;
}
return lengthSum;
}
int main(){
int arr[] = {3, 7, 1, 2, 3, 1, 6, 3, 2, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int k = 3;
int ans = subArrayLengthSum(arr, size, k);
cout<<"The max sum of lengths of non-overlapping subarrays with "<<k<<" as max element is "<<ans;
return 0;
}輸出
The max sum of lengths of non-overlapping subarrays with 3 as max element is 7
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP