首页 > 其他分享 >973.最接近原点的K个点

973.最接近原点的K个点

时间:2025-01-18 22:24:44浏览次数:1  
标签:973 个点 原点 points let dists

973.最接近原点的K个点

var kClosest = function(points, k) {
    let n=points.length;
    if(k>n){
        return points;
    }
    let dists=new Array(n).fill(null);
    for(let i=0;i<n;++i){
        dists[i]=dist(points[i])  
    }
    dists.sort((a,b)=>a-b);
    let distK=dists[k-1];
    let ans=[]
    let t=0;
    for(let i=0;i<n;i++){
        if(dist(points[i])<=distK){
            ans[t++]=points[i];
        }
    }
    return ans
};
function dist(point){
    return point[0]*point[0]+point[1]*point[1]
}


//class 版本
class Solution {
    kClosest(points, K) {
        const N = points.length;
        const dists = new Array(N);
        for (let i = 0; i < N; ++i)
            dists[i] = this.dist(points[i]);

        dists.sort((a, b) => a - b);
        const distK = dists[K - 1];

        const ans = [];
        let t = 0;
        for (let i = 0; i < N; ++i)
            if (this.dist(points[i]) <= distK)
                ans[t++] = points[i];
        return ans;
    }

    dist(point) {
        return point[0] * point[0] + point[1] * point[1];
    }
}

const s = new Solution();
const points = [[3, 3], [5, -1], [-2, 4]];
console.log(s.kClosest(points, 2));

//简化版
var kClosest = function(points, k) {
    // 直接在points上进行原地操作,根据欧几里得距离的平方进行排序
    points.sort((a, b) => (a[0]*a[0] + a[1]*a[1]) - (b[0]*b[0] + b[1]*b[1]));
    // 返回前k个元素
    return points.slice(0, k);
};


1

标签:973,个点,原点,points,let,dists
From: https://www.cnblogs.com/KooTeam/p/18678948

相关文章

  • P9730 [CEOI2023] Grading Server
    这是什么神仙题啊。本题主要思路:优化转移决策,减少dp状态。我们发现减一层盾其实就是给自己加攻击,所以我们将初始生命值(攻击力)\(C_H\)和\(C_G\)重新表示为\(A_1=C_H-f_GS\),\(A_2=C_G-f_HS\),让\(F_1=f_G\),\(F_2=f_H\)。现在的点对就是\((A_1,F_1,A_2,F_......
  • position的relative和absolute定位原点是哪里?
    在前端开发中,position属性的relative和absolute定位原点有所不同。以下是关于这两者定位原点的详细解释:1.position:relative;(相对定位)定位原点:相对定位的元素是相对于它原来在文档流中的位置进行偏移的。也就是说,它的定位原点是元素自身原来的位置。特点:相对定位的元素仍然......
  • 前端学习openLayers配合vue3(面的绘制,至少三个点)
    我们学习了点和线的绘制,当然我们也可以绘制一个面关键代码,需要注意的一点就是面的绘制需要三维数组,线的绘制是个二维数组constpolygonLayer=newVectorLayer({source:newVectorSource(),});map.addLayer(polygonLayer);letfeature=newFeature({//......
  • YOLO11多个点组合创新:GC10-DET缺陷检测 | DCNv4结合SPPF+11Detect创新性结合
    ......
  • 用3个IMU计算空间中两个点的相对位置
    1.总思路用两个IMU(1-head,2-robotend)分别固定在想要测量的两个空间点上,用另外一个IMU(3)固定在静止物体上,充当参考坐标系。IMU1ismountedonthehumanhead,IMU2ismountedontherobotend-effector,andIMU3ismountedonthedeskasstationary.2.带入实数计算......
  • 31.在 Vue 3 中使用 OpenLayers 加载 CSV 数据,显示各个点
    目录一、前言二、项目准备1.安装Vue32.安装OpenLayers和D3三、CSV数据格式四、实现步骤1.配置Vue3+OpenLayers项目结构Map.vue文件2.解析代码dataSource和map变量showPoints方法featureStyle方法initMap方法3.启动开发服务器五、总结......
  • 写一个点击从左侧滑出的布局
    创建一个点击从左侧滑出的布局通常涉及到HTML、CSS和JavaScript。以下是一个简单的实现:HTML:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scal......
  • 2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中
    2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组points和一个字符串s,其中points[i]表示第i个点的坐标,s[i]表示第i个点的标签。如果一个正方形的中心在(0,0),边与坐标轴平行,并且内部没有标签相同的两个点,则称这个正方形为“合法”的。你的任务是返回可以被“合......
  • P1973 [NOI2011] NOI 嘉年华
    前言好困难啊,最近的新目标是吧效率拉起来思路转化题意一问对于\(n\)条线段,我们对于每条线段,都要分到两个场地中的一个或者放弃,求如何分配使得两个场地不存在\(i\)满足\(i\inS_1\)且\(i\inS_2\)(其中\(S_1,S_2\)分别表示两个场地线段的集合),并且使......
  • 在DOM上同时绑定两个点击事件(一个用捕获,一个用冒泡),事件总共会执行几次,先执行哪个事件?
    在DOM上同时绑定两个点击事件,一个使用捕获,一个使用冒泡,事件总共会执行两次。执行顺序:捕获阶段的事件先执行。当事件发生在目标元素的祖先元素上时,捕获阶段的监听器会先被触发,一路向下传递到目标元素。冒泡阶段的事件后执行。事件在目标元素上触发后,会沿着DOM树向上冒泡......