Каталог

  • 25. Обратные узлы в k-группе
  • 26. Удалить дубликаты из отсортированного массива
  • 27. Удалить элемент

исходный код | Гитхаб

25. Обратные узлы в k-группе

Литкод | задача 25

Учитывая head связанного списка, переворачивать узлы списка k за раз и возвращать измененный список.

k — положительное целое число, меньшее или равное длине связанного списка. Если число узлов не кратно k, то неучтенные узлы, в конце концов, должны остаться такими, какие они есть.

Вы не можете изменять значения в узлах списка, могут быть изменены только сами узлы.

Пример 1:

Input: head = [1,2,3,4,5], k = 2
Output: [2,1,4,3,5]

Пример 2:

Input: head = [1,2,3,4,5], k = 3
Output: [3,2,1,4,5]

Ограничения:

  • Количество узлов в списке равно n.
  • 1 <= k <= n <= 5000
  • 0 <= Node.val <= 1000

26. Удалить дубликаты из отсортированного массива

Литкод | проблема 26

Учитывая массив целых чисел nums, отсортированный в неубывающем порядке, удалите дубликаты на месте, чтобы каждый уникальный элемент появлялся только один раз. Относительный порядок элементов должен оставаться одинаковым.

Поскольку в некоторых языках невозможно изменить длину массива, вместо этого вы должны поместить результат в первую часть массива nums. Более формально, если после удаления дубликатов осталось k элементов, то первые k элементов из nums должны содержать окончательный результат. Неважно, что вы оставляете за первыми k элементами.

Возвратите kпосле помещения окончательного результата в первыеkслотыnums.

Не не выделяйте дополнительное пространство для другого массива. Вы должны сделать это, изменив входной массив на месте с O(1) дополнительной памяти.

Пользовательский судья:

Судья проверит ваше решение с помощью следующего кода:

int[] nums = [...]; // Input array
int[] expectedNums = [...]; // The expected answer with correct length
int k = removeDuplicates(nums); // Calls your implementation
assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
    assert nums[i] == expectedNums[i];
}

Если все утверждения пройдены, ваше решение будет принято.

Пример 1:

Input: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).

Пример 2:

Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).

Ограничения:

  • 1 <= nums.length <= 3 * 104
  • -100 <= nums[i] <= 100
  • nums отсортировано в неубывающем порядке.

27. Удалить элемент

Литкод | задача 27

Учитывая массив целых чисел nums и целое число val, удалите все вхождения val в nums на месте. Относительный порядок элементов может быть изменен.

Поскольку в некоторых языках невозможно изменить длину массива, вместо этого вы должны поместить результат в первую часть массива nums. Более формально, если после удаления дубликатов осталось k элементов, то первые k элементов из nums должны содержать окончательный результат. Неважно, что вы оставляете за первыми k элементами.

Возвратите kпосле помещения окончательного результата в первыеkслотыnums.

Не не выделяйте дополнительное пространство для другого массива. Вы должны сделать это, изменив входной массив на месте с O(1) дополнительной памяти.

Пользовательский судья:

Судья проверит ваше решение с помощью следующего кода:

int[] nums = [...]; // Input array
int val = ...; // Value to remove
int[] expectedNums = [...]; // The expected answer with correct length.
                            // It is sorted with no values equaling val.
int k = removeElement(nums, val); // Calls your implementation
assert k == expectedNums.length;
sort(nums, 0, k); // Sort the first k elements of nums
for (int i = 0; i < actualLength; i++) {
    assert nums[i] == expectedNums[i];
}

Если все утверждения пройдены, ваше решение будет принято.

Пример 1:

Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 2.
It does not matter what you leave beyond the returned k (hence they are underscores).

Пример 2:

Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums containing 0, 0, 1, 3, and 4.
Note that the five elements can be returned in any order.
It does not matter what you leave beyond the returned k (hence they are underscores).

Ограничения:

  • 0 <= nums.length <= 100
  • 0 <= nums[i] <= 50
  • 0 <= val <= 100