Как получить хеш-ключ? - PullRequest
       0

Как получить хеш-ключ?

0 голосов
/ 13 ноября 2018

Когда я решаю этот вопрос ( 149. Максимальное количество очков на линии ) в коде leetcode, при выполнении этого случая возникает ошибка:

Input [[0,0],[94911151,94911150],[94911152,94911151]]
Output 3
Expected 2

Это мой код:

/**
 * 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) {
        int size = points.size();
        int ans = 0;
        if (size == 0) return 0;
        unordered_map<double, int> mp;
        double k;
        for (int i = 0; i < size; ++i) {
            int num = 0;
            for (int j = i + 1; j < size; ++j) {
                if (points[i].x == points[j].x && points[i].y == points[j].y) {
                    num++;
                    continue;
                }
                // my question in below code.
                // how can I get the hash key according to slope
                if (points[j].x - points[i].x != 0)
                    k = (double)(points[j].y - points[i].y) / (double)(points[j].x - points[i].x);  // calculate the slope.
                else k = INT_MAX;
                mp[k]++;
            }
            if (mp[k] == 0) mp[k] = 1, num--;
            for (auto it = mp.begin(); it != mp.end(); ++it) {
                if (it->second > ans) {
                    ans = it->second;
                    ans += num;
                }    
            }
            mp.clear();
        }
        return ans+1;
    }
};

В приведенном выше тестовом случае, когда он вычисляет наклон с [0,0] и [94911151,94911150], он возвращается k = 1.Поэтому я хочу знать, как получить правильный ключ хеша для решения этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...