gpt4 book ai didi

c - 求给定数组中除 1 个整数之外的所有整数的最大和最小总和

转载 作者:行者123 更新时间:2023-11-30 20:07:47 24 4
gpt4 key购买 nike

今天我来这里还有另一个问题需要解决。

这是 HackerRank 作业中的一项,https://www.hackerrank.com/challenges/mini-max-sum/problem因此,总体思路是从给定数组中找到 4/5 整数的最小和和最大和;

为了解决这个问题,我想出了使用排序算法首先按升序对数组进行排序,然后我将添加除最后一个之外的所有整数以找到最小和,并将除第一个之外的所有整数相加找到最大和的一个。

void miniMaxSum(int arr_count, int* arr) {

int i,j,min,temp;
for(i=0;i<arr_count-1;i++)
{
min=i;
for(j=i+1;j<arr_count;j++)
{
if(arr[j]<arr[min])
min=j;
}
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}

int minsum=0,maxsum=0;
for(i=0;i<arr_count-1;i++)
minsum+=arr[i];
for(i=1;i<arr_count;i++)
maxsum+=arr[i];

printf("%d %d",minsum,maxsum);
}

以下代码适用于一些测试用例,但不适用于所有测试用例。任何帮助将不胜感激。

最佳答案

您无需对数组进行排序即可获得结果。您所需要的只是知道数组的最大值和最小值是多少。只需使用一个循环即可。

void miniMaxSum(int arr_count, int* arr) {
int i,min, max;
min = max = arr[0];
for(i=1;i<arr_count;i++)
{
if(min > arr[i]) min = arr[i];
else if(max < arr[i]) max = arr[i];
}

int sum = 0;
for(i=0;i<arr_count;i++)
sum+=arr[i];

printf("%d %d",sum-max,sum-min);
}

HTH

关于c - 求给定数组中除 1 个整数之外的所有整数的最大和最小总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60245666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com