windows 安装 wordpress/甘肃新站优化
0️⃣python数据结构与算法学习路线
学习内容:
- 基本算法:枚举、排序、搜索、递归、分治、优先搜索、贪心、双指针、动态规划等…
- 数据结构:字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、数组、队列、栈、树、图、堆等…
题目:
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
输入输出:
输入:
nums =
[[1,2],
[3,4]]
r = 1, c = 4
输出:
[[1,2,3,4]]
解释:
行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。
解题思路:
- 通过乘积是否相等判断给定数组是否满足要求
- 如果满足需求,双层遍历,赋值给新的数组
算法实现:
class Solution(object):def matrixReshape(self, nums, r, c):M, N = len(nums), len(nums[0])if M * N != r * c:return numsres = [[0] * c for _ in range(r)]row, col = 0, 0for i in range(M):for j in range(N):if col == c:row += 1col = 0res[row][col] = nums[i][j]col += 1return res
出现问题:
通过计数解决新数组的移动问题