第70天:100天DSA编码挑战
发布: (2025年12月13日 GMT+8 12:39)
2 min read
原文: Dev.to
Source: Dev.to

介绍
接受新挑战:每天解答 GeeksforGeeks 每日一题(POTD)并分享我的解法!💻🔥
目标是提升问题解决能力、提升编码水平,并且每天学习新东西。关注我的旅程吧!🚀
问题:交换对角线
难度: 简单 | 准确率: 85.42%
给定一个方阵 mat[][],交换主对角线和次对角线的元素。
- 主对角线: 从左上角到右下角的元素(行索引等于列索引)。
- 次对角线: 从右上角到左下角的元素(
row + column = n - 1)。
示例
示例 1
Input:
mat[][] = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]
]
Output:
[
[2, 1, 0],
[3, 4, 5],
[8, 7, 6]
]
解释:
主对角线 = [0, 4, 8]
次对角线 = [2, 4, 6]
将同一行的对角线元素互换后,主对角线变为次对角线,次对角线变为主对角线。
示例 2
Input:
mat[][] = [
[2, 3],
[5, 4]
]
Output:
[
[3, 2],
[4, 5]
]
解释:
主对角线 = [2, 4]
次对角线 = [3, 5]
交换后,对角线互换。
约束条件
1 ≤ mat.size() ≤ 5001 ≤ mat[i][j] ≤ 10⁶
解法
class Solution:
def swapDiagonal(self, mat):
n = len(mat)
for i in range(n):
# Swap the element on the major diagonal with the corresponding element on the minor diagonal
mat[i][i], mat[i][n - 1 - i] = mat[i][n - 1 - i], mat[i][i]
return mat