Правила[Одномерные массивы]43. Дан массив чисел. Найти сумму элементов массива, расположенных между минимальным и максимальным элементами включительно.
Вообще то условия задачи не до конца ясны. Если в массиве повторяются min и/или max, то от какого — от самого крайнего слева или самый правый иметь ввиду или тот который больше сумму даст?
Вот по самым первым min и max, понятно что если добавить "=" к >/< будут последние найденные. Возможно еще надо подумать как с макс суммой.
public static int summaMinMax(int... array) {
int[] minmax = new int[2];
for (int i = 1; i < array.length; i++)
minmax = new int[]{array[i] < array[minmax[0]] ? i : minmax[0], array[i] > array[minmax[1]] ? i : minmax[1]};
minmax = new int[]{minmax[0] < minmax[1] ? minmax[0] : minmax[1], minmax[0] < minmax[1] ? minmax[1] : minmax[0]};
int summa = 0;
for (int i = minmax[0]; i <= minmax[1] ; i++)
summa += array[i];
return summa;
}
public static int sumBetweenMinAndMax(int[] array) {
int sum = 0;
int iMin = 0, iMax = 0;
for (int i = 1; i < array.length; i++) {
if (array[iMin] > array[i]) iMin = i;
if (array[iMax] < array[i]) iMax = i;
}
if(iMax > iMin) for (int i = iMin; i <= iMax; i++) sum += array[i];
else for (int i = iMax; i <= iMin; i++) sum +=array[i];
return sum;
}
// for example
public static int getSummBetweenMinAndMax(int[] arr)
{
int mini = 0;
int maxi = 0;
int res = 0;
for (int i = 1 ; i < arr.length ; i++)
{
mini = arr[i] < arr[mini] ? i : mini;
maxi = arr[i] > arr[maxi] ? i : maxi;
}
for (int i = mini > maxi ? maxi : mini; i <= (mini < maxi ? maxi : mini); i++)
res += arr[i];
return res;
}
int[] m = {1, 2, 3, 4, 5, 6, 0, 8, 9};
int minM = m[0];
int maxM = m[0];
int indexMin = 0;
int indexMax = 0;
int sum = 0;
for (int i = 0; i < m.length; i++)
{
if (m[i] < minM)
{
minM = m[i];
indexMin = i;
}
if (m[i] > maxM)
{
maxM = m[i];
indexMax = i;
}
}
for (int i = indexMin; i <= indexMax; i++)
{
sum = sum + m[i];
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Вот по самым первым min и max, понятно что если добавить "=" к >/< будут последние найденные. Возможно еще надо подумать как с макс суммой.