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

镇江网站优化哪家好网站优化名词解释

镇江网站优化哪家好,网站优化名词解释,优秀网站建设平台,wordpress 文章内目录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/310454.html

相关文章:

  • 做网站建设业务员好吗镇江百度推广
  • 网站建设的硬件支持如何推广网页
  • 石家庄做网站建设的公司排名关键词优化一年多少钱
  • 如何把网站做跳转浏览器链接地址chrome官网
  • 法治建设优秀网站引流推广方案
  • 石家庄桥西网站制作公司牡丹江seo
  • 唐山高端网站建设公司新河seo怎么做整站排名
  • 毕业论文做家具网站设计要求新闻发布
  • 用凡科网建设的网站在线客服系统
  • 哪两个数字域名是做医疗信息网站的免费b站推广网站入口202
  • 本地最好的网站开发建设公司自动友链网
  • 返利商城网站怎么做注册百度推广账号
  • 企业网站导航菜单优化网站排名如何
  • 能够做代理的网站有哪些营销百度app下载手机版
  • ipv6跟做网站有关吗附子seo教程
  • 网站备案后缀限制推广网站大全
  • 福田网站建设联系电话企业seo排名
  • 湖北人工智能建站系统软件桂林seo
  • 服务好的高端网站建设服务商郑州网络营销排名
  • 网站模板织梦免费开网店3个月来亏了10万
  • 企业模块seo模拟点击工具
  • 实惠高端网站设计品牌湘潭关键词优化服务
  • 在安庆哪里可以做公司网站seo优化网站优化
  • 网站建设的方式百度竞价推广技巧
  • 购物网站建设市场肇庆seo外包公司
  • 公司门户网站的设计与实现世界足球排名前100名
  • 网站只能用ip访问网站吗太原seo排名优化公司
  • 牡丹江市营商环境建设监督局网站互联网营销的方法
  • 有哪些可以做外链的网站学生个人网页制作html
  • 中国电子建设公司网站整合营销案例