leetcode 149 —— Max Points on a Line

来源:互联网 发布:unity3d遮罩shader 编辑:程序博客网 时间:2024/05/20 17:09
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

思路:因为一个float的类型转化折腾了好久

<pre name="code" class="cpp">float k = (float)(points[i].y - points[j].y) / (points[i].x - points[j].x);  //对
<pre name="code" class="cpp">float k = float(points[i].y - points[j].y) / (points[i].x - points[j].x);    //对

float k = float((points[i].y - points[j].y) / (points[i].x - points[j].x));  //错  
<pre name="code" class="cpp">float k = (float)((points[i].y - points[j].y) / (points[i].x - points[j].x));//错


class Solution {public:int maxPoints(vector<Point>& points) {if (points.size() <= 2) return points.size();unordered_map<float, int> myHash;int maxNums = INT_MIN;for (int i = 0; i < points.size(); i++){myHash.clear();myHash[(float)INT_MAX] = 0;int samePoints = 1;for (int j = 0; j < points.size(); j++){if (i == j) continue;  //同一个点if (points[i].x == points[j].x&&points[i].y == points[j].y){  //相同的点samePoints++;continue;}if (points[i].x == points[j].x){   //与y轴平行myHash[INT_MAX]++;}else{float k = (float)(points[i].y - points[j].y) / (points[i].x - points[j].x);//此处的类型转化,后面表达式一定不能带括号myHash[k]++;}}for (auto j = myHash.begin(); j != myHash.end(); ++j){int tmp = j->second + samePoints;maxNums = maxNums > tmp ? maxNums : tmp;}}return maxNums;}}a;



0 0
原创粉丝点击