JuniorКодИногдаЕщё не отвечали
Модуль разности двух диагоналей квадратной матрицы
Дана матрица n x n из целых. Верните модуль разности между суммой её главной диагонали и суммой побочной диагонали.
Требования:
- Элемент главной диагонали —
m[i][i]; побочной —m[i][n-1-i]. - Верните неотрицательное целое.
def diagonal_diff(m):
# ваш код здесь
Допишите реализацию.
Пройдите i от 0 до n-1, суммируя m[i][i] для главной диагонали и m[i][n-1-i] для побочной, затем верните abs(main - anti). Ключевой индекс побочной — n-1-i; ошибка на единицу здесь (использование n-i или счёт снизу вверх) — классический баг. Один проход — O(n).
- ✗Использовать
n-iвместоn-1-iдля столбца побочной диагонали - ✗Забывать брать модуль разности
- ✗Не приводить разобранные строковые ячейки к
intперед суммированием
- →Почему индекс столбца побочной диагонали
n-1-i, а неn-i? - →Как прочитать эту матрицу из многострочной строки перед суммированием?
Оглавление
Задача
Реализуйте diagonal_diff: верните модуль разности сумм главной и побочной диагоналей квадратной матрицы.
Решение
def diagonal_diff(m):
n = len(m)
main = sum(m[i][i] for i in range(n))
anti = sum(m[i][n - 1 - i] for i in range(n))
return abs(main - anti)
Ключевые моменты
- Главная диагональ —
m[i][i], побочная —m[i][n-1-i]; именно-1ловит ошибку на единицу. - Один проход по строкам — O(n), память O(1).
- Не забудьте
absи приведение ячеек кint, если матрица пришла строкой.
Оглавление