Algorithm
本周的算法题为 867. 转置矩阵
给你一个二维整数数组 matrix
, 返回 matrix
的 转置矩阵 。
矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
实现代码如下:
var transpose = function (matrix) {
var resultArr = []
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
// 如果是undefined,则赋值[]
if (!resultArr[j]) {
resultArr[j] = []
}
resultArr[j].push(matrix[i][j])
}
}
return resultArr
}
解题思路:
从示例1可以看出,转置前后的数据,其实是有规律可循的,所求的二维数组,其实就是转置前,每个子元素数组同下标的集合,示例1中的147分别是matrix中各子元素数组下标为0的值,以此类推,使用两个for循环得到结果。
Review
Scientists ’talk’ with a whale for 20 minutes
科学家表示,他们与一头鲸鱼进行了一次“对话”。他们还表示,这种聊天可以帮助他们有朝一日与外星人交谈。这些科学家来自加州大学、阿拉斯加鲸鱼基金会和SETI(搜寻外星智慧)。这三个组织联合起来,与一头名叫吐温的座头鲸交谈。他们用“座头鲸语言”和她交谈了20分钟。他们的对话发生在科学家们向阿拉斯加海岸外的海洋发送“联系电话”之后。吐温听到了呼唤,做出了回应。她游到考察船边聊天。SETI表示,这是人类和座头鲸之间的第一次交流。
科学家们说,他们与吐温的对话并不深刻。布伦达·麦考恩教授说,这更像是一系列的问候。鲸鱼使用联络呼叫让其他鲸鱼知道它们在哪里。科学家们在20分钟内发起了36次同样的呼叫。每一次,吐温都做出了回应。她甚至匹配了研究人员每一次呼叫的间隔时间。麦考恩教授告诉《商业内幕》网站,她的研究可以让与外星人交谈变得更容易。她说:“这个星球上有各种各样的智能体。通过研究它们,我们可以更好地了解外星人可能是什么样子的,因为它们不会完全同我们一样。”
Tip
switch 和 if else 哪个效率高
在大多数情况下,switch
语句的效率通常比 if else
语句要高。这是因为 switch
语句使用了跳转表来查找符合条件的分支,而不是逐个比较条件。跳转表实际上是一个数组,通过将条件值作为索引,可以直接访问到对应的目标地址。因此,跳转表的查找方式具有固定的时间复杂度 O(1),无论有多少个分支,查找时间都是恒定的。
相比之下,if else
语句需要逐个比较条件,如果有多个条件,它的查找时间将随着条件数量和复杂度的增加而增加。在最坏的情况下,if else
语句的时间复杂度可能达到 O(n),其中 n 是分支的数量。
然而,在实际应用中,仍然需要根据具体的场景来选择使用 switch
还是 if else
。如果条件是固定的值,且分支数量较多,建议使用 switch
语句。如果条件是动态的,并且需要进行更复杂的条件判断,建议使用 if else
语句。
Share
总是有人要赢的,那为什么不能是我呢? —— 科比·布莱恩特