本文主要是介绍最接近原点的 K 个点 【leetcode - 973 - 简单】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路:
1、这个题应该是很简单的,但是我的代码写的比较复杂。
2、如果熟悉优先队列的朋友应该会写出比较好的算法。
3、我这个就是先存前K个元素,之后再去找出前K个元素最大一个结果,去和当前的对比。
4、我这个算法之后每次都要便利K次以便找到最大的值。
5、优先队列先前就排序好了前K个元素。比较的时候就简单了
class Solution {class point{private int x;private int y; private double result;point(int x,int y,double result){this.x = x;this.y = y;this.result = result;}}public int[][] kClosest(int[][] points, int K) {List<point> list = new ArrayList<>();for(int i = 0;i < points.length; i++) {double result = Math.sqrt( (points[i][0]*points[i][0]) + (points[i][1]*points[i][1]) );if(list.size() < K) {list.add(new point(points[i][0],points[i][1],result));} else {point max = list.get(0);for(point p : list) {if(p.result > max.result) {max = p;}}if(max.result > result) {max.x = points[i][0];max.y = points[i][1];max.result = result;}}}int[][] returnResult = new int[K][2];int i = 0;for(point p : list) {returnResult[i][0] = p.x;returnResult[i][1] = p.y;i++;}return returnResult;}
}
这篇关于最接近原点的 K 个点 【leetcode - 973 - 简单】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!