K个最近的点
来源:互联网 发布:世纪游轮更名巨人网络 编辑:程序博客网 时间:2024/05/21 22:44
给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点。按照距离由小到大返回。如果两个点有相同距离,则按照x值来排序;若x值也相同,就再按照y值排序。
样例
给出 points = [[4,6],[4,7],[4,4],[2,5],[1,1]], origin = [0, 0], k = 3
样例
给出 points = [[4,6],[4,7],[4,4],[2,5],[1,1]], origin = [0, 0], k = 3
返回 [[1,1],[2,5],[4,4]]
//Definition for a point.class Point { int x; int y; Point() { x = 0; y = 0; } Point(int a, int b) { x = a; y = b; } } public class Solution { /** * @param points a list of points * @param origin a point * @param k an integer * @return the k closest points */ @SuppressWarnings("null")public static Point[] kClosest(Point[] points, Point origin, int k) { Point[] outputPoints = new Point[k]; for(int i=0;i<points.length;i++){ for (int j=i;j<points.length;j++){ if(length(points[i],origin)>length(points[j],origin)){ Point temp=points[i]; points[i]=points[j]; points[j]=temp; }else if(length(points[i],origin)==length(points[j],origin)){ if(points[i].x>points[j].x){ Point temp=points[i]; points[i]=points[j]; points[j]=temp; }else if(points[i].y>points[j].y){ Point temp=points[i]; points[i]=points[j]; points[j]=temp; } } } } for (int i=0;i<k;i++){ outputPoints[i]=points[i]; }return outputPoints; } //小到大 public void bubbleSort(int[] unsorted){ for (int i=0;i<unsorted.length;i++) for (int j=i;j<unsorted.length;i++) if(unsorted[i]>unsorted[j]){ int temp=unsorted[i]; unsorted[i]=unsorted[j]; unsorted[j]=temp; } } public static double length(Point start,Point end){ int temp_x=Math.abs(start.x-end.x); int temp_y=Math.abs(start.y-end.y); return Math.sqrt(temp_x*temp_x+temp_y*temp_y); } public static void print(Point pp){ System.out.println("最近的点:("+pp.x+","+pp.y+")"); }/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubPoint[] p= {new Point(4,6),new Point(4,7),new Point(4,4),new Point(2,5),new Point(1,1)};Point origin = new Point(0,0);int k=3;Point[] pNew = kClosest(p, origin, k);for(int i=0;i<pNew.length;i++){print(pNew[i]);}}}
阅读全文
0 1
- K个最近的点
- K个最近的点
- lintcode[612]:k个最近的点
- Lintcode-K个最近的点(#612)
- LintCode:M-K个最近的点
- LintCode K个最近的点
- LintCode: K个最近的点
- k个最近的点(Leetcode答案)
- K个最近的点-LintCode
- 612. K个最近的点[LintCode]
- Lintcode 612. K个最近的点
- 计算二维空间某点的最近k 个点
- LintCode-[中等] 612. K个最近的点
- 【K-D树 K维最近距离的t个点】HDU
- 在一个二维平面上找到离固定点最近的k个点位置
- m维空间里n个点每点最近的第k个点的距离
- 算法爱好者——K个最近的点 ? 待解决
- 链表第k个点
- JAVA 对象术语
- swift 中"+"方法,与"-"方法的定义
- 实现一个类可以记录账户余额、存钱、取钱、计算利息
- warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
- 云客Drupal8源码分析之实体Entity(三)配置实体储存处理器
- K个最近的点
- GitHub入门(1)
- Java面试精选
- 编译u-boot时出现大量CPU警告解决方案
- 将本地文本文件上传到HDFS上,然后导入hive/impala对应表中
- debian9安装wps
- 数据库SQL优化大总结之 百万级数据库优化方案
- mapreduce 论文(中文翻译)
- 一个高可伸缩的游戏服务器架构