题解 | #多少个点位于同一直线#

多少个点位于同一直线

http://www.nowcoder.com/practice/bfc691e0100441cdb8ec153f32540be2

/**
 * struct Point {
 *	int x;
 *	int y;
 * };
 */
class Solution {
public:
    /**
     * 
     * @param points Point类vector 
     * @return int整型
     */
    int gcb(int a,int b){
        return b == 0 ? a : gcb(b, a % b);
    }
    int maxPoints(vector<Point>& points) {
        int len = points.size();
        if(len < 2) return len;
        int res = 0;
        for(int i = 0;i < len;i++){
            map<pair<int,int>,int> recordMap;
            int dup = 1;
            for(int j = i + 1;j < len;j++){
                int delta_x = points[i].x - points[j].x;
                int delta_y = points[i].y - points[j].y;
                if(delta_x == 0 && delta_y == 0){
                    dup++;
                }else{
                    int g = gcb(delta_x,delta_y);
                    delta_x = delta_x / g;
                    delta_y = delta_y / g;
                    recordMap[{delta_x,delta_y}]++;
                }
            }
            res = max(res,dup);
            for(auto it=recordMap.begin();it != recordMap.end();it++){
                res = max(res,dup + it->second);
            }
        }
        return res;
    }
   
};
全部评论

相关推荐

点赞 评论 收藏
分享
03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务