TGViewer
Java | LeetCode Java | LeetCode @easy_java_task · 6.44K subscribers
Post #1775 605
Задача: №31. Next Permutation
Сложность: medium

Перестановка массива целых чисел — это упорядочивание его элементов в определённую последовательность.
Нужно изменить текущий массив nums, чтобы получить следующую лексикографически большую перестановку.
Если такой не существует (массив в убывающем порядке) — отсортировать его по возрастанию.

Пример:
Input: nums = [1,2,3] Output: [1,3,2]


👨‍💻 Алгоритм:

1⃣Найти самый длинный невозрастающий суффикс справа. Элемент перед ним — это "точка поворота" i.

2⃣Найти справа от i наименьшее число, большее nums[i], и поменять их местами.

3⃣Развернуть все элементы после позиции i — они были в убывающем порядке, а нам нужно минимальное по возрастанию завершение.

😎 Решение:
public class Solution {
public void nextPermutation(int[] nums) {
int i = nums.length - 2;
while (i >= 0 && nums[i + 1] <= nums[i]) {
i--;
}
if (i >= 0) {
int j = nums.length - 1;
while (nums[j] <= nums[i]) {
j--;
}
swap(nums, i, j);
}
reverse(nums, i + 1);
}

private void reverse(int[] nums, int start) {
int i = start, j = nums.length - 1;
while (i < j) {
swap(nums, i, j);
i++;
j--;
}
}

private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_java_task
  1. Oct 14, 2026Задача: 1332. Remove Palindromic Subsequences Сложность: easy Вам дана строка s, состоящая…
  2. Oct 13, 2026Post #2296
  3. Oct 13, 2026Задача: 1120. Maximum Average Subtree Сложность: medium Дан корень бинарного дерева. Верни…
  4. Oct 13, 2026Post #2294
  5. Oct 12, 2026Задача: 1413. Minimum Value to Get Positive Step by Step Sum Сложность: easy Дан массив це…
  6. Oct 11, 2026Задача: 672. Bulb Switcher II Сложность: medium Есть комната с n лампочками, пронумерованн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →