[Leetcode]重塑矩阵&杨辉三角
Leetcode数据结构题目集第四天,重塑矩阵
和杨辉三角
.
重塑矩阵
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
注意:
1 | 给定矩阵的宽和高范围在 [1, 100]。 |
解题思路&题解
解题思路大体就是先转成一维矩阵,然后再转成目标矩阵。核心思想是下面的公式:
- (i, j) -> i * n + j => x
- i=x / n
- j=x % n
代码如下:
1 | func matrixReshape(mat [][]int, r int, c int) [][]int { |
杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
1 | 输入: 5 |
解题思路&题解
杨辉三角这算是一道经典题目了,大一就开始接触。这里主要用到这个特性->每行长度等于当前列数 -> 第一行只有一个,第二行有两个,第三行有三个。
代码如下:
1 | func generate(numRows int) [][]int { |