不准访问
- 积分
- 169
- 学分
- 个
- 大米
- 升
- 人参
- 枚
- 水井
- 尺
- 小麦
- 颗
- 萝卜
- 根
- 小米
- 粒
- UID
- 186117
- 注册时间
- 2015-10-2
- 最后登录
- 1970-1-1
- 在线时间
- 小时
- 好友
- 收听
- 听众
- 日志
- 相册
- 帖子
- 主题
- 分享
- 精华
|
你这样的复杂度应该是O(n2),我后来又想了一个矩阵相乘的方法,复杂度是O(n):
假设你题目里那个矩阵是a,新矩阵的行为row,列为col, 两个初值都为0,a先乘一个size为(len(a[0]),1)的单位矩阵,得到矩阵c=[4,2,4],size是(3,1)(p.s.不方便打矩阵,就将就下吧,也能看懂的),然后对矩阵c逐行遍历,只要碰到等于len(a[0]),(这里是4),row += 1; 然后对a做转置得到矩阵b,(python里直接a.T就ok了),再生成一个size为(len(b[0],1))的单位矩阵c,再b*c,得到矩阵d: [3,2,3,2],size是(4,1),再对d逐行遍历,仍然是只要碰到等于len(a[0]),(这里是4),col += 1. 这样就获得了新矩阵的行列数row,col. row, col中只要有一个是0,返回[], 否则返回size为(row,col)的单位矩阵。 |
|