Junior & rekrutacja cz.2 aktualizacja

Jakiś czas temu opisałam jedno z zadań rekrutacyjnych które jakiś czas temu otrzymałam.  Znajduje się ona w artykule: Junior & rekrutacja cz.2.

Dziś aktualizuje ten artykuł ponieważ otrzymałam do mojego wcześniejszego rozwiązania bardzo wartościowy i cenny feedback za co serdecznie dziękuje :).

1. Zadanie rekrutacyjne

Dla krótkiego przypomnienia – moim zadaniem rekrutacyjnym było policzenie absolutnej minimalnej sumy tablicy integerów np: n=5, suma = 6, tablica [5,1,3,7,3]. W moim poprzednim rozwiązaniu zastosowałam m.in algorytm sortowania przez wybieranie. W nowej implementacji zastosowałam metodę Arrays.sort() z pakietu: java.util.Arrays.

2. Nowe rozwiązanie

Stworzyłam dwie metody w klasie: AbsolteMinSum. Na początku korzystam z metody copyOf dzięki czemu sortowanie tablicy odbywać się będzie na skopiowanej oryginalnej tablicy.

private int[] arraySort(int[] arr) {
        int[] arrayToSort = Arrays.copyOf(arr, arr.length);
        Arrays.sort(arrayToSort);
        return arrayToSort; //[1,3,3,5,7]    
}

Następnie na posortowanej tablicy korzystając z metody Math.abs obliczam sumę absolutną wg wzoru:
|1-3| = 2 |3-3| = 0 |3-5| = 2 |5-7| = 2; suma:  2+0+2+2=6

public int calculateAbsoluteSum(int[] sorted) {
    int absoluteSum = 0;
arraySort(sorted); for (int i = 0; i < sorted.length - 1; i++) { int elem0 = sorted[i]; //1 int elem1 = sorted[i + 1]; //3 absoluteSum += Math.abs(elem0 - elem1); } return absoluteSum; }

3. Podsumowanie

Dzięki tym zmianą kod stał się czytelniejszy w szczegolności dzięki zastosowaniu gotowej metody na sortowanie z samej Javy. Również metodzie calculateAbsoluteSum nadałam większe uprawnienia zmieniając modyfikator z prywatnego na publiczny i wydzielając ją w ten sposób z metody  arraySort. Całość zaś przeniosłam do osobnej klasy “Main”.  Link do Github’a: Devwords.

A Ty jak rozwiązał/a byś to zadanie? Chętnie przeczytam w komentarzu 🙂

2 thoughts on “Junior & rekrutacja cz.2 aktualizacja”

  1. Cześć!

    Fajnie, że dzielisz się zadaniami rekrutacyjnymi na blogu, na pewno innym to się przyda! 🙂
    W ramach tego zadania poleciłbym Ci, aby `AbsoluteMinSum` samo sobie wewnętrznie sortowało przekazaną tablicę np. w metodzie prywatnej, która będzie wywoływana przez metodę `getAbsoluteSum`. Tej metodzie zmieniłbym nazwę na `calculateAbsoluteSum`. 🙂

    To takie dwie moje podpowiedzi, aby trochę zamknąć wewnętrzną implementację przed światem zewnętrznym. Bo ktoś może nie wiedzieć, że do `getAbsoluteSum` trzeba przekazać posortowaną tablicę. 😉

    Pozdrawiam i trzymaj się tej tematyki, bo na pewno jest chodliwa!

    1. Cześć, dziękuje 🙂 zawsze bardzo się cieszę z takich konstruktywnych sugestii 🙂 . Już je zaimplementowałam i zaktualizowałam artykuł 🙂
      Pozdrawiam serdecznie 🙂

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *