ПредишенСледващото

Подобно на много задачи, всичко зависи от това как ние ще подкрепи тези стакове. Ако ние трябва да се заделят малко място за всеки комин може да бъде и правя. Но в този случай един от най-малките стакове, може да изтощи ресурсите, докато други са почти празни.

Можете, разбира се, да се използва по-гъвкава система за разделяне на пространството, но това значително усложнява задачата.

Подход 1. фиксирана отделяне

Можете да разделите на масива на три равни части и възможност за създаване на стекове в рамките на ограничено пространство. Моля, имайте предвид, че ние допълнително ще опише границите на използване на скоби: квадратни скоби [] показват, че пределно допустимите стойности са включени в обхвата и скоби - стойностите не са включени.

• стека 1: [0, п / 3).
• Stack 2: [п / 3, 2n / 3).
• стека 3: [2n / 3, п].

код за този разтвор е показано по-долу:

Ако имаме допълнителна информация относно назначаването на стека, можете да промените алгоритъма. Например, ако се приема, че стека 1 ще има повече елементи от стека 2, можете да преразпредели пространство в полза на стека 1.

2. разделяне гъвкав подход

Вторият подход - гъвкаво разпределение на пространството, за да се подредят блокчета. Когато един от най-малките стакове спре да поставя на входа пространство, ние се увеличи размерът на необходимите елементи на ресурси и да се премести, ако е необходимо.

В допълнение, можете да създадете масив, така че последната купа започва в края на масива, и завършва в началото - "глава" масив.

Въпреки това, по време на интервюто, че няма да правят такива намаления на комплекс код, така че ние се ограничаваме до опростена версия на (псевдо).

В такива проблеми е важно да се отдаде на писане на чисто, за поддържане код. Вие трябва да използвате допълнителни часове, както направихме с StackData и блокове от код, които искате да изберете в отделните методи. Този съвет е от полза не само за интервю, тя може да се използва в реални приложения.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!