leetcode Closest Points to Origin

题目

题目大意:找到距离(0,0)点最近的K个点。

解题思路:计算每个点到(0,0)点的距离,最后再排序即可。

解决这道题的关键在于如何选择数据结构。

使用map存放点和距离两个变量。由于map本身是对key值排序的,若要对value排序,需要将map的key和value转到vector<pair<变量,变量>>中,然后在使用一下sort(point.begin(),point.end(),cmp)排序,具体的方法参照https://blog.csdn.net/theonegis/article/details/48549887

源码附上:

class Solution {
public:
    vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
        map<vector<int>,int> map;
        vector<pair<vector<int>,int>> res;
        vector<vector<int>> v;
        for(int i=0;i<points.size();i++)
        {
            int sum=0;
            for(int j=0;j<2;j++)
            {
                sum+=pow(points[i][j],2);
            }
            map[points[i]]=sum; 
            res.push_back(pair<vector<int>,int>(points[i],sum));
        }
        sort(res.begin(),res.end(),cmp);
        for(int j=0;j<K;j++)
        {
            v.push_back(res[j].first);
        }
        
        return v;
    }
    static bool cmp(pair<vector<int>,int> a,pair<vector<int>,int> b)
    {
        return a.second<b.second;
    }
};

最后备注一下,用上面的程序运行效率不高。

猜你喜欢

转载自blog.csdn.net/Exaggeration08/article/details/86559763