各位题友大家好! 今天是 @负雪明烛 坚持日更的第 29 天。今天力扣上的每日一题是「766. 托普利茨矩阵」。
解题思路
- 解题思路:每一个位置都要跟其右下角的元素相等。
我以前做这个题的时候选择了一个笨方法:遍历每条对角线,判断每条对角线上元素是否都相等。很显然,这个做法是直接按照托普利茨矩阵定义写的,但是由于对角线比较多,导致代码比较复杂。
现在,我是这么做的:只要每个元素都跟其右下角元素相等就行了。因为这样遍历结束之后,就能保证所有对角线上的元素就都是相等的。
代码
在 Python 代码中我用了切片操作,第 $i$ 行的 $[0, N - 2]$的切片等于第 $i + 1$ 行的 $[1, N - 1]$,这样能节省代码长度。
Python, C++, Java 代码如下:
class Solution:def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:for i in range(len(matrix) - 1):if matrix[i][:-1] != matrix[i + 1][1:]:return Falsereturn True
class Solution {public:bool isToeplitzMatrix(vector<vector<int>>& matrix) {for (int i = 0; i < matrix.size() - 1; ++i) {for (int j = 0; j < matrix[0].size() - 1; ++j) {if (matrix[i][j] != matrix[i + 1][j + 1])return false;}}return true;}};
class Solution {public boolean isToeplitzMatrix(int[][] matrix) {for (int i = 0; i < matrix.length - 1; ++i) {for (int j = 0; j < matrix[0].length - 1; ++j) {if (matrix[i][j] != matrix[i + 1][j + 1])return false;}}return true;}}
刷题心得
- 每次做题都会有新体会,坚持刷题,就一定会有收获。
- 多看看别人的优秀题解,能学到很多东西。
OK,以上就是 @负雪明烛 写的今天题解的全部内容了,如果你觉得有帮助的话,求赞、求关注、求收藏。如果有疑问的话,请在下面评论,我会及时解答。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。
欢迎关注我的公众号:「每日算法题」。
祝大家牛年大吉!AC 多多,Offer 多多!我们明天再见!
