In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with different size but keep its original data.

You're given a matrix represented by a two-dimensional array, and two positive integers r and c representing the row number and column number of the wanted reshaped matrix, respectively.

The reshaped matrix need to be filled with all the elements of the original matrix in the same row-traversing order as they were.

If the 'reshape' operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix.

Example 1:

Input:
nums =
[[1,2],
[3,4]]
r = 1, c = 4
Output:
[[1,2,3,4]]
Explanation:
The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.

Example 2:

Input:
nums =
[[1,2],
[3,4]]
r = 2, c = 4
Output:
[[1,2],
[3,4]]
Explanation:
There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix.

Note:

  1. The height and width of the given matrix is in range [1, 100].
  2. The given r and c are all positive.
 
 
class Solution:
def matrixReshape(self, nums, r, c):
"""
:type nums: List[List[int]]
:type r: int
:type c: int
:rtype: List[List[int]]
"""
m=len(nums)
n=len(nums[0]) if m*n!=r*c:
return nums
else:
ans=[]
for i in range(r):
ans0=[None]*c
for j in range(c):
if (i*c+j+1)%n!=0:
ans0[j]=nums[int((i*c+j+1)//n)][(i*c+j+1)%n-1]
else:
ans0[j]=nums[int((i*c+j+1)//n)-1][n-1]
ans.append(ans0)
return ans

  

最新文章

  1. Python 基础语法学习笔记
  2. MVC 知识点学习3(linq to sql)
  3. “SQLServerAgent当前未运行”问题解决
  4. django rest framework
  5. NavMesh名字、层索引、层值之间的转换
  6. ios 开发中出现的 pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug
  7. UISwitch属性
  8. 【转】ubuntu 11.10(32位系统)下编译android源码
  9. USACO 2.2 Subset Sums 集合(subset)
  10. 恢复sudo的权限的命令
  11. SpringMVC架构的项目,js,css等静态文件导入有问题
  12. CentOS7 安装 jexus-5.8.2-x64
  13. 拷贝的表的SQL语句 SELECT INTO 和 INSERT INTO SELECT的用法与区别
  14. 第3章 Linux上文件的权限管理
  15. Iris 语录
  16. Fabric的settings用法
  17. MSSQL-SELECT&UPDATE动作要申请的锁
  18. <The Art of Readable Code> 笔记一
  19. linux命令创建和修改用户及密码
  20. hadoop english

热门文章

  1. windows 网页打不开github网站
  2. Codeforces 877E - Danil and a Part-time Job(dfs序+线段树)
  3. Pyhon 日志管理 -- logging
  4. tomcat日志切割和定期删除
  5. English trip -- VC(情景课) 7 A Shopping 购物
  6. hdu 2266 dfs+1258
  7. Coconuts, Revisited(递推+枚举+模拟)
  8. view_baseInfo
  9. RpcContext
  10. spark collect获取所有元素