pending

/**
 * Definition for a point.
 * struct Point {
 *     int x;
 *     int y;
 *     Point() : x(0), y(0) {}
 *     Point(int a, int b) : x(a), y(b) {}
 * };
 */
class Solution {
public:
    int maxPoints(vector<Point> &points) {
        //key - value; key: slope(double); value : times(int);
	map<double, set<int>> rm;
	map<double, set<int>>::iterator itr_rm;
	set<int>	vtimes;
	map<int,int> same_value;// key(point id) - value(the same point with this point with point id);
/*	map<map<int,int>,int> same_map;

    for(int k = 0;k<points.size();++k)
    {
        same_map[]
    }*/
//	int vtimes = 0;

	if (points.size() == 1)
	{
		return 1;
	}
// 
    if(points.size() == 0)
    {
        return 0;
    }

	for (int i = 0; i < points.size(); ++i)
	for (int j = i+1; j < points.size(); ++j)
	{

        if(points[i].x - points[j].x == 0 && points[i].y == points[j].y)
        {
            same_value[i]++;
        }
		if (points[i].x - points[j].x == 0 && points[i].y != points[j].y)
		{
			vtimes.insert(j);
		}

		else
		{
			double slope = (points[i].y - points[j].y) / (points[i].x - points[j].x);

			rm[slope].insert(j);// value = rm[key];

		}
	}

	int max = 0;

	for (itr_rm = rm.begin(); itr_rm != rm.end(); ++itr_rm)
	{
		if (itr_rm->second.size() >= max)
		{
			max = itr_rm->second.size();
		}
	}
    if(max ==0 && vtimes.size()==0)
    {
        return 0;
    }
    else
    {
        return (max + 1) > (vtimes.size() + 1) ? (max + 1) : (vtimes.size() + 1);
    }
        
    }
};


http://oj.leetcode.com/problems/max-points-on-a-line/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值