将以下内容翻译为中文:最大化从数组中选择的数字的和,使其变为空

2023年 8月 29日 45.5k 0

将以下内容翻译为中文:最大化从数组中选择的数字的和,使其变为空

我们将得到一个数组,必须从中选择一个元素并将该元素添加到总和中。将该元素添加到总和中后,我们必须从数组中删除三个元素(如果存在当前数字、当前数字 -1 和当前数字 + 1)。通过此方法,我们将使数组为空并得到总和。最后,我们必须使总和最大。

Input: [ 1, 2, 3]
Output: 4

登录后复制

说明

一开始,我们可以有 3 步,删除 1、2 或 3。

  • 让我们删除 1,然后我们必须删除 0、1 和 2(如果存在其中任何一个,则必须至少存在其中一个)。我们将得到总和等于 1,数组将只剩下 3。删除 3 后,我们将得到总和等于 4。

  • 让我们删除 2,然后我们必须删除 1、2 和 3,最终的总和将为 2。

  • 先删除 3,那么 sum 为 3,数组为 1。删除 1 后,sum 为 4。

Input: [ 1, 2, 2, 2, 3, 3]
Output: 8

登录后复制

我们可以删除前两个三,这将给我们 6,然后两个二将被删除。

之后我们将删除剩下的两个中的一个并得到 8 作为答案。

方法 1

在这种方法中,我们将首先获取数组中存在的最大元素,以获取数组中存在的元素的频率。

稍后我们将创建一个数组来存储给定数组中存在的元素的频率。

我们将从频率数组的最后一个元素开始遍历,因为我们必须从数组中删除当前的一个减号和一个加号元素,这将始终保存比其大一的数字,从而得到最大总和:结果。

示例

#include
using namespace std;
int maxElement(int arr[], int n){
int mx = arr[0]; // defining variable to store the maximum element
for(int i=1; i 0){
ans += freq[i]*i;
freq[i-1] -= freq[i];
}
}
return ans;
}
int main(){
int n; // number of elements in the given array
int arr[] = { 1, 2, 2, 2, 3, 3}; // given array
n = sizeof(arr)/sizeof(arr[0]);
// calling the function to get the answer
cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论