题解 | #直线上的牛#
直线上的牛
https://www.nowcoder.com/practice/58ff4047d6194d2ca4d80869f53fa6ec
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param points int整型vector<vector<>> * @return int整型 */ int maxPoints(vector<vector<int> >& points) { // write code here int small = INT_MAX, big = INT_MIN; for (int i = 0; i < points.size(); ++i) { small = min(small, min(points[i][0], points[i][1])); big = max(big, max(points[i][0], points[i][1])); } int ret = big - small; vector<vector<int>> vv(ret + 1, vector<int>(ret + 1)); for (int i = 0; i < points.size(); ++i) vv[points[i][0] - small][points[i][1] - small] = 1; int nums = 0; for (int j = 0; j < ret + 1; ++j) { int count = 0; int m = j, n = ret; while (m >= 0 && n >= 0) { if (vv[m][n] == 1) ++count; --m; --n; } nums = max(nums, count); } for (int j = 0; j < ret + 1; ++j) { int count = 0; int m = j, n = 0; while (m >= 0 && n <= ret) { if (vv[m][n] == 1) ++count; --m; ++n; } nums = max(nums, count); } return nums; } };