如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 :矩阵对角线上的所有元素都 不是 0,矩阵中所有其他元素都是 0。
给你一个大小为 n x n 的二维整数数组 grid ,表示一个正方形矩阵。如果 grid 是一个 X 矩阵 ,返回 true ;否则,返回 false 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-matrix-is-x-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题干中的grid是嵌套的列表,第一时间就想到了把这个列表转成np.array()然后再通过矩阵相关的方法去处理,用时150ms,然后在评论区发现有人用Java答题的思路跟我一样,但是他只需要1ms甚至0ms。
找耗时长的过程中发现,虽然我把列表转换成了np.array,但是这种转换并没有带来任何方便,然后我就直接在原始列表上操作数据,时间从150ms降到了70-80ms,但这与1ms仍差距甚远,
然后发现虽然我去掉了np.array的转换操作。。。但是import np的语句我没删掉。。去掉引包语句之后时间降到了30ms。。。引包的耗时还是挺长的。。。
可是可是可是,为什么相同的解题思路python要30ms,Java只要1ms甚至0ms呢?
还有更奇怪的,下面最后一个,也就是第四个代码块的实现方式理论上遍历的次数要比代码块3要少。但是代码块3只要30ms,而代码块4要将近70??因为测试用例中True的情况比较多?False的情况比较少?
为啥Java比python快那么多?为啥硬遍历比计算diff还要快??我不理解。
1 | import numpy as np |
1 | import numpy as np |
1 | class Solution(object): |
1 | class Solution(object): |