Преобразование матрицы
Задача
Преобразовать матрицу, чтобы она была срезана по y координате. Пример:
x = [[1, 2, 3],
[4, 5, 6]]
#Нужно срезать до 1 индекса включительно у обоих и получить массив вида:
x = [[2, 3],
[5, 6]]
--------------------
x = [[1, 2, 3],
[4, 5, 6]]
#Нужно срезать до 2 индекса включительно у обоих и получить массив вида:
x = [[3],
[6]]
Не обращайте внимания на отступы, они сделаны для наглядности. Массивы в матрице всегда равны друг другу.
Моё решение
def cut(n: int, x: list[list]) -> list[list]:
new_massive = []
for i in range(len(x)):
massive = []
for j in range(n, len(x[0])):
massive.append(x[i][j])
new_massive.append(massive)
return new_massive
#Где n - это индекс, до которого нужно сразать. x - матрица.
Проблема
Моя функция работает за O(n^2). Как сделать её работу за O(n) и, если возможно, за O(1)?
Источник: Stack Overflow на русском