JavaRush /Java блог /Архив info.javarush /Кухня(); Задание N43
terranum
28 уровень
Milan

Кухня(); Задание N43

Статья из группы Архив info.javarush
Кухня(); Задание N43 - 1 Правила [Одномерные массивы] 43. Дан массив чисел. Найти сумму элементов массива, расположенных между минимальным и максимальным элементами включительно. Кухня(); Задание N43 - 2
Комментарии (12)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Airon Уровень 34
15 сентября 2014
Вообще то условия задачи не до конца ясны. Если в массиве повторяются 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;
}
Kashey Уровень 11
12 сентября 2014
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;
}
Docktor91 Уровень 40
10 сентября 2014
// 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;
}
artushenko Уровень 20
9 сентября 2014

        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];
        }
Vash_the_Stampede Уровень 11
9 сентября 2014

    public static void solve(double[] arr) {
        int n = arr.length;
        double[][] sum = new double[n][n];
        int iMin = 0;
        int iMax = 0;
        for (int i = 0; i < n; i++) {
            iMin = arr[i] < arr[iMin] ? i : iMin;
            iMax = arr[i] > arr[iMax] ? i : iMax;
            sum[i][i] = arr[i];
            for (int j = i + 1; j < n; j++) {
                sum[i][j] = sum[j][i] = sum[i][j - 1] + arr[j];
            }
        }
        System.out.println(sum[iMin][iMax]);
    }