当前位置: 首页 > wzjs >正文

icp网站备案查询无锡网站搜索引擎优化

icp网站备案查询,无锡网站搜索引擎优化,目前最火的自媒体平台,广州建筑设计公司有哪些1.题目描述 给定一个点的列表 points,其中每个点的坐标表示为 [xi, yi],以及一个整数 k,表示需要找到距离原点 (0,0) 最近的 k 个点。 2.思路 思路一: 首先输入是一个二维数组,然后开始计算二维数组忠每个元素(每…

1.题目描述

给定一个点的列表 points,其中每个点的坐标表示为 [xi, yi],以及一个整数 k,表示需要找到距离原点 (0,0) 最近的 k 个点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.思路

思路一:
首先输入是一个二维数组,然后开始计算二维数组忠每个元素(每一个点)与原点直接的距离(可以直接对每个点求勾股定理),最后输出是离原点距离最近的点(k代表返回的点的个数),按升序排序。

思路二:
用优先级队列[PiorityQueue默认是小根堆,但是可以改变比较器的规则(comparetor,让他变成大根堆)。],把每个坐标的欧式距离入堆之后,用对象.size()的方法,列出总共的元素,根据题目要求要前k跟原点近的点的欧式距离,保留前k个,其他用对象.poll()按最大开始剔除,直到剩最小的k个,最后用一个二维数组输出。
在这里插入图片描述
在这里插入图片描述

在 PriorityQueue 中,标准的 poll() 方法并不接受任何参数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.代码实现

import java.util.PriorityQueue;public class Solution06 {public int[][] kClosest(int[][] points, int k) {// 创建最大堆,按照 (x² + y²) 从大到小排序,创建和声明最大堆,此时堆是空的PriorityQueue<int[]> s1=new PriorityQueue<>((a,b)->Integer.compare(distance(b),distance(a)));//遍历每个点,联系:一个求距离的算法。for(int[] point:points){s1.offer(point);//加入堆if (s1.size()>k){s1.poll();//只保留最近的 k 个点,也就是把大根堆大的点剔除掉,剩下k个小的元素}}//输出剩下的k个二维数组,有k个点,2代表每个坐标都有x,y,也就是两列int[][] reasult=new int[k][2];int index=0;for(int[] subpoint:s1){reasult[index]=subpoint;index++;}return reasult;
//        int[][] result = new int[k][2];
//        for (int i = 0; i < k; i++) {
//            result[i] = s1.poll();
//        }
//        return result;}private static int distance(int[] point){return point[0]*point[0]+point[1]*point[1];}}

带main方法验证的代码:

import java.util.PriorityQueue;
import java.util.Arrays;
public class Solution06 {public int[][] kClosest(int[][] points, int k) {// 创建最大堆,按照 (x² + y²) 从大到小排序,创建和声明最大堆,此时堆是空的PriorityQueue<int[]> s1=new PriorityQueue<>((a,b)->Integer.compare(distance(b),distance(a)));//遍历每个点,联系:一个求距离的算法。for(int[] point:points){s1.offer(point);//加入堆if (s1.size()>k){s1.poll();//只保留最近的 k 个点,也就是把大根堆大的点剔除掉,剩下k个小的元素}}//输出剩下的k个二维数组,有k个点,2代表每个坐标都有x,y,也就是两列int[][] reasult=new int[k][2];int index=0;for(int[] subpoint:s1){reasult[index]=subpoint;index++;}return reasult;
//        int[][] result = new int[k][2];
//        for (int i = 0; i < k; i++) {
//            result[i] = s1.poll();
//        }
//        return result;}private static int distance(int[] point){return point[0]*point[0]+point[1]*point[1];}public static void main(String args[]){Solution06 test=new Solution06();int[][] point1={{1, 3}, {-2, 2}};int k1=1;System.out.println("输出与原点最近的点:");printResult(test.kClosest(point1,k1));}// 打印二维数组的方法private static void printResult(int[][] result) {
//        for (int[] point : result) {
//            System.out.println(Arrays.toString(point));
//        }
//        System.out.println();for(int[] rePoint:result){System.out.println(Arrays.toString(rePoint));}}}

带main方法的测试代码:

import java.util.PriorityQueue;
import java.util.Arrays;
public class Solution06 {public int[][] kClosest(int[][] points, int k) {// 创建最大堆,按照 (x² + y²) 从大到小排序,创建和声明最大堆,此时堆是空的PriorityQueue<int[]> s1=new PriorityQueue<>((a,b)->Integer.compare(distance(b),distance(a)));//遍历每个点,联系:一个求距离的算法。for(int[] point:points){s1.offer(point);//加入堆if (s1.size()>k){s1.poll();//只保留最近的 k 个点,也就是把大根堆大的点剔除掉,剩下k个小的元素}}//输出剩下的k个二维数组,有k个点,2代表每个坐标都有x,y,也就是两列int[][] reasult=new int[k][2];int index=0;for(int[] subpoint:s1){reasult[index]=subpoint;index++;}return reasult;
//        int[][] result = new int[k][2];
//        for (int i = 0; i < k; i++) {
//            result[i] = s1.poll();
//        }
//        return result;}private static int distance(int[] point){return point[0]*point[0]+point[1]*point[1];}//   public static void main(String args[])
//   {
//       Solution06 test=new Solution06();
//       int[][] point1={{1, 3}, {-2, 2}};
//       int k1=1;
//       System.out.println("输出与原点最近的点:");
//       printResult(test.kClosest(point1,k1));
//
//   }
//    // 打印二维数组的方法
//    private static void printResult(int[][] result) {
        for (int[] point : result) {
            System.out.println(Arrays.toString(point));
        }
        System.out.println();
//        for(int[] rePoint:result)
//        {
//            System.out.println(Arrays.toString(rePoint));
//        }
//    }public static void main(String[] args) {Solution06 solution = new Solution06();int[][] points1 = {{1, 3}, {-2, 2}};int k1 = 1;System.out.println("Test Case 1:");int[][] result1 = solution.kClosest(points1, k1);for (int[] point : result1) {System.out.println(Arrays.toString(point));}System.out.println();int[][] points2 = {{3, 3}, {5, -1}, {-2, 4}};int k2 = 2;System.out.println("Test Case 2:");int[][] result2 = solution.kClosest(points2, k2);for (int[] point : result2) {System.out.println(Arrays.toString(point));}System.out.println();}}
http://www.dtcms.com/wzjs/556648.html

相关文章:

  • 十堰网站整站优化公司给网站网站做代理
  • 做网站需要什么费用wordpress有什么好玩的插件
  • wordpress建站简单吗网站建设规范
  • 网站建设需求调研问卷洛阳建设银行官方网站
  • 有什么自学网站建设的网站we建站
  • 有自媒体谁还做网站网站程序前台
  • 品牌网站制作流程图珠海企业网站制作费用
  • 简单网站建设视频wordpress注册页面美化
  • 威海市建设局官方网站软件页面设计用哪个软件比较好
  • 商业网站 模板中国电子加工网
  • 企业网站建设与网络营销的关系wordpress添加目录
  • 电商培训网站北京微信公众号定制开发
  • 单位建设网站的作用意义浏览器入口
  • c语言程序设计网站受欢迎的大连网站建设
  • 电子商务网站建设需要做好哪些准备6中国it企业排行榜
  • 万户做网站怎么样卖域名的公司 骗做网站
  • 网站建设公司(深圳信科)双语网站建设定制开发
  • 山西省住房和城乡建设厅门户网官方网站软件开发用什么软件编程
  • 赣州市经开区住房和建设局网站三国网页游戏排行榜
  • 美术网站建设网络服务怎么写
  • 营销型网站功能模块朝阳seo建站
  • 安阳建设局网站快速建站软件排名
  • 找人做企业网站注意啥wordpress.图片旋转代码
  • 网络彩票网站建设上海市网站建设电话号码
  • 阀门专业网站建设刷粉网站推广
  • 广西新农村建设指导员网站建站快车
  • 个人如何做免费网站携程网网站推广方式
  • 昆明云南微网站制作哪家好十大软件app排行免费
  • 怎么建设个人网站教程wordpress备份数据库结构
  • 山东网站建设制作公司做灯具外贸哪个网站好做