第70天:100天DSA编码挑战

发布: (2025年12月13日 GMT+8 12:39)
2 min read
原文: Dev.to

Source: Dev.to

Day 70 of 100 天 DSA 编程挑战的封面图片

介绍

接受新挑战:每天解答 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() ≤ 500
  • 1 ≤ 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
Back to Blog

相关文章

阅读更多 »

第1天/30 天 回到 DSA 挑战

DSA - 回顾了 DSA 的笔记。- 使用 hashmap 和补数技术解决了 Two Sum 问题。- 与其存储每个元素并检查和,st...

回文检查器

什么是回文?回文是一种单词、短语、数字或其他字符序列,无论正读还是倒读都相同,忽略空格、标点和大小写。