562. Longest Line of Consecutive One in Matrix
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了562. Longest Line of Consecutive One in Matrix相关的知识,希望对你有一定的参考价值。
This is an easy question. No matter what kind of method you chose, the time complexity is at least O(m*n), becasue you have to traverse each element at least once. Here, we have a straight forward method without any maps...
class Solution { public: int longestLine(vector<vector<int>>& M) { if (M.empty()) return 0; int result = 0; int cur = 0; for (int i = 0; i < M.size(); i++) { cur = 0; for (int j = 0; j < M[i].size(); j++) { if (M[i][j]) cur++; else cur = 0; result = max(result, cur); } } for (int j = 0; j < M[0].size(); j++) { cur = 0; for (int i = 0; i < M.size(); i++) { if (M[i][j]) cur++; else cur = 0; result = max(result, cur); } } //int my = M.size(), mx = M[0].size(); for (int j = -(int)M.size(); j < (int)M[0].size(); j++) { cur = 0; for (int i = 0; i < M.size(); i++) { if (j + i < 0 || i + j >= M[0].size()) continue; else { if (M[i][j + i]) cur++; else cur = 0; result = max(result, cur); } } } for (int j = 0; j < M[0].size() + M.size(); j++) { cur = 0; for (int i = 0; i < M.size(); i++) { if (j - i < 0 || j - i >= M[0].size()) continue; else { if (M[i][j - i]) cur++; else cur = 0; result = max(result, cur); } } } return result; } };
Pay attention to the third for-loop. Because the return value of size() is size_type, an unsigned value, when you make some operations with int, be very careful about bugs, especially when the value is minus.
以上是关于562. Longest Line of Consecutive One in Matrix的主要内容,如果未能解决你的问题,请参考以下文章
leetcode562- Longest Line of Consecutive One in Matrix- medium
LeetCode 562. Longest Line of Consecutive One in Matrix(在矩阵中最长的连续1)$
[LeetCode] Longest Line of Consecutive One in Matrix 矩阵中最长的连续1
LeetCode Number of Longest Increasing Subsequence