Маблағи фарқиятҳои пайдарпай дар массиви даврӣ  


Сатҳи душворӣ осон
Аксар вақт пурсида мешавад Cadence Ҳиндустон мехаранд GE Тандурустӣ Карат Quora Лабораторияҳои SAP хиёбони
тартиботи ҳарбӣ Хасис Sorting

Изҳороти мушкилот  

Фарз мекунем, ки шумо як ҳамаҷониба асал. Ин массив бояд ҳамчун а баррасӣ карда шавад массиви даврӣ. Арзиши охирини массив ба массиви аввал пайваст карда мешавад, аn ⇒ a1. Масъалаи "Ҳадди аксар фарқияти пайдарпай дар массиви даврӣ" дархост мекунад, ки ҳосили максималии фарқи байни ҳар як унсури пайдарпай муайян карда шавад. Пас, шумо бояд фарқи байни унсури пайдарпайро пайдо кунед. Ба шумо иҷозат дода шудааст, ки рақамҳои массивро аз нав тағир диҳед. Чунин аст, ки ҷамъи фарқияти онҳо бояд ҳадди аксар бошад.

Маблағи ҳадди аксар = | a1 - a2 | + | a3 - a4 | + | аn-1 - аn | + | аn - а1 |

мисол  

arr[]={9, 8, 4, 2}
22

Шарҳ

Мо метавонем массиви додашударо ҳамчун 9, 2, 8, 4 ҷобаҷо кунем, он гоҳ он медиҳад

| 9 - 2 | + | 2 - 8 | + | 8 - 4 | + | 4 - 9 | = 22

Маблағи фарқиятҳои пайдарпай дар массиви даврӣ

Алгоритм  

1. Set a variable output to 0.
2. Sort the given array.
3. Traverse up to n/2 length of the array(n is the length of the array).
    1. Sum up the value of output and array’s last values and store it to sum.
    2. Get the difference of output and twice of array’s starting value and store it to the output.
4. Return the value of output.

Шарҳ  

Бо назардошти асал of ҳаждаҳҳо. Массив бояд ҳамчун а баррасӣ карда шавад массиви даврӣ ки ба элементи якум бевосита пас аз унсури охирин гузаштан мумкин аст. Аз мо хоҳиш карданд, ки маблағи максималии фарқияти байни унсурҳои пайдарпайро муайян кунем. Ва мо бартарии ҷобаҷогузории массивро дорем. Чунин ки мо метавонем ҳаҷми фарқиятҳоро ба ҳадди аксар расонем.

ҳамчунин нигаред
Сатри изоморфии ҳалли Leetcode

Дар ин ҷо мо массиви додаем. Мо массивро воқеан тағир доданӣ нестем, мо метавонем танҳо бо рақамҳои он бозӣ кунем. Ҳоло мо танҳо нисфи массивро тай карданием. Ин танҳо то n / 2 дарозии массив аст, ки n дарозии воқеии массив аст. Мо тағирёбандаро бо номи output эълон кардем. Кадом фарқияти массивро ба даст меорад. Ва он гоҳ онро ҷамъбаст кунед ва онро барои баромадан нигоҳ доред. Аммо пеш аз гузаштан аз массив мо массивро ҷобаҷо хоҳем кард. Мо массивро тавре ҷобаҷо хоҳем кард, ки он бояд бо навбат афзоиш ёбад. Баъд аз навъ массиви мо шумораи камтарин дар массив дар оғози массив аст. Ва шумораи бештар дар массив дар охири массив аст.

Азбаски мо массивро ҷобаҷо кардем, мо бояд танҳо массивро то нисфи дарозии массив тай кунем. Он гоҳ мо фарқи дукаратаи арзиши ҷории массив ва арзиши натиҷаро мегирем ва онро барои баромадан нигоҳ медорем. Дар ин мо фарқиятро ба даст меорем ва сипас арзиши охирини массивро мегирем, ки ду маротиба аз арзиши он иборат аст. Ва он гоҳ бо арзиши баромади илова кунед ва онро дар натиҷа нигоҳ доред. Ин равандро то нисфи дарозии массив нигоҳ доред ва арзиши натиҷаро баргардонед.

рамз  

Коди C ++ барои зиёд кардани ҳаҷми фарқияти пай дар пай дар як массиви даврӣ

#include<iostream>
#include<algorithm>

using namespace std;

int getMaxDiff(int arr[], int n)
{
    int output = 0;

    sort(arr, arr + n);

    for (int i = 0; i < n/2; i++)
    {
        output -= (2 * arr[i]);
        output += (2 * arr[n - i - 1]);
    }

    return output;
}
int main()
{
    int arr[] = { 9, 8, 2, 4 };
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << getMaxDiff(arr, n) << endl;
    return 0;
}
22

Рамзи Java барои ба ҳадди аксар расонидани фарқияти пай дар пай дар массиви даврӣ

import java.util.Arrays;

class maximumDiff
{
    public static int getMaxDiff(int arr[], int n)
    {
        int output = 0;

        Arrays.sort(arr);

        for (int i = 0; i < n/2; i++)
        {
            output -= (2 * arr[i]);
            output += (2 * arr[n - i - 1]);
        }

        return output;
    }
    public static void main (String[] args)
    {
        int arr[] = {9, 8, 2, 4 };
        int n = arr.length;
        System.out.println(getMaxDiff(arr, n));
    }
}
22

Таҳлили мураккабӣ  

Мураккабии вақт

O (n log n) ки дар "Н" шумораи унсурҳои массив аст. Зеро мо массивро ҷобаҷо кардем. Ҳамин тавр, мураккабии вақт монанд ба навъҳои якҷояшавӣ мегардад. Азбаски ин сарҳади болоии мураккабии вақтро нишон медиҳад.

ҳамчунин нигаред
Дарозтарин префикси маъмул бо истифода аз калима бо калимаи мувофиқ

Мураккабии фазо

О (1) зеро ягон ҷои иловагӣ лозим нест. Пас мураккабии фазо, ки алгоритм талаб мекунад, доимӣ аст. Аммо мураккабии фазои тамоми барнома хаттӣ аст.