zoukankan      html  css  js  c++  java
  • Leetcode973. K Closest Points to Origin最接近原点的K个点

    我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。

    (这里,平面上两点之间的距离是欧几里德距离。)

    你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。

    示例 1:

    输入:points = [[1,3],[-2,2]], K = 1 输出:[[-2,2]] 解释: (1, 3) 和原点之间的距离为 sqrt(10), (-2, 2) 和原点之间的距离为 sqrt(8), 由于 sqrt(8) < sqrt(10),(-2, 2) 离原点更近。 我们只需要距离原点最近的 K = 1 个点,所以答案就是 [[-2,2]]。

    示例 2:

    输入:points = [[3,3],[5,-1],[-2,4]], K = 2 输出:[[3,3],[-2,4]] (答案 [[-2,4],[3,3]] 也会被接受。)

    提示:

    1. 1 <= K <= points.length <= 10000
    2. -10000 < points[i][0] < 10000
    3. -10000 < points[i][1] < 10000

    想复杂的一种做法

      struct PointNode
      {
    	  vector<int> v;
    	  double dis;
    	  PointNode(int x, int y)
    	  {
    		  v.push_back(x);
    		  v.push_back(y);
    		  dis = sqrt(x* x + y * y);
    	  }
      };
    
      bool cmp(PointNode x, PointNode y)
      {
    	  return x.dis < y.dis;
      }
    
      class Solution {
      public:
    	  vector<vector<int>> kClosest(vector<vector<int>>& points, int K) 
    	  {
    		  vector<PointNode> v;
    		  vector<vector<int> > ans;
    		  for (int i = 0; i < points.size(); i++)
    		  {
    			  v.push_back(PointNode(points[i][0], points[i][1]));
    		  }
    		  sort(v.begin(), v.end(), cmp);
    		  for (int i = 0; i < K; i++)
    		  {
    			  ans.push_back(v[i].v);
    		  }
    		  return ans;
    	  }
      };

    题目简单,不需要用到结构体

      bool cmp(vector<int> x, vector<int> y)
      {
    	  return x[0] * x[0] + x[1] * x[1] < y[0] * y[0] + y[1] * y[1];
      }
    
      class Solution {
      public:
    	  vector<vector<int>> kClosest(vector<vector<int>>& points, int K) 
    	  {
    		  vector<vector<int> > ans;
    		  sort(points.begin(), points.end(), cmp);
    		  for (int i = 0; i < K; i++)
    		  {
    			  ans.push_back(points[i]);
    		  }
    		  return ans;
    	  }
      };
  • 相关阅读:
    hdu 1823 Luck and Love 二维线段树
    UVA 12299 RMQ with Shifts 线段树
    HDU 4578 Transformation 线段树
    FZU 2105 Digits Count 线段树
    UVA 1513 Movie collection 树状数组
    UVA 1292 Strategic game 树形DP
    【ACM】hdu_zs2_1003_Problem C_201308031012
    qsort快速排序
    【ACM】nyoj_7_街区最短路径问题_201308051737
    【ACM】nyoj_540_奇怪的排序_201308050951
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433755.html
Copyright © 2011-2022 走看看