K个最近的点
前段时间在网上看到一些准备找工作的人会在LintCode上刷题,然后我今天上去看了一下,也打算开始做题,然后把每天做的题目和以后的优化记录下来。
2017年8月6日 21:17:27
第一题:
描述:给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点。按照距离由小到大返回。如果两个点有相同距离,则按照x值来排序;若x值也相同,就再按照y值排序。
样例:给出 points = [[4,6],[4,7],[4,4],[2,5],[1,1]], origin = [0, 0], k = 3 返回 [[1,1],[2,5],[4,4]]
下面是我的代码:
class Point
{
public int x;
public int y;
public Point() { }
public Point(int x,int y) { this.x = x;this.y = y; }
}
class Program
{
static void Main(string[] args)
{
Point[] ps=new Point[]{new Point(,),new Point(,),new Point(,) ,new Point(,),new Point(,)};
Point[] pfinal = Closest(ps, new Point(, ), );
foreach(Point p in pfinal)
{
Console.WriteLine($"({p.x},{p.y})");
}
Console.ReadKey();
}
static Point[] Closest(Point[] points,Point origin, int k)
{
Point[] plist = new Point[k];
List<int> list = new List<int>();
for(int i =;i<points.Length;i++)
{
list.Add(GetLen(points[i], origin));
}
list.Sort();
for (int i = ; i <points.Length; i++)
{
for(int j=;j<k;j++)
{
if (list[j] == GetLen(points[i], origin))
plist[j] = points[i];
}
}
return plist;
}
static int GetLen(Point p1,Point p2)//获取两点间距离
{
return Convert.ToInt32(Math.Sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)));
}
}
前一部分的思想是使用GetLen方法获取每个点到给定点的距离,然后把距离添加到一个List集合中,然后将List使用Sort排序,输出前K个点就可以了;
但是后来发现我无法区分哪个距离是哪个点和给定点之间的距离,都想使用Dictionary了。。。
然后问了一下室友,室友提供了一个方法:将距离保存到List集合后,再次遍历所有点,判断循环时当前点到给定点的距离和前k个距离相等时,获取当前点即可。
虽然按照样例中的数据测试是对的,但是对于对称点我觉得会出现错误,所以明天有时间再更新一次!
K个最近的点的更多相关文章
- django模型操作
		Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
		其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ... 
- 【开源】专业K线绘制[K线主副图、趋势图、成交量、滚动、放大缩小、MACD、KDJ等)
		这是一个iOS项目雅黑深邃的K线的绘制. 实现功能包括K线主副图.趋势图.成交量.滚动.放大缩小.MACD.KDJ,长按显示辅助线等功能 预览图 最后的最后,这是项目的开源地址:https://git ... 
- 找到第k个最小元----快速选择
		此算法借用快速排序算法. 这个快速选择算法主要利用递归调用,数组存储方式.包含3个文件,头文件QuickSelect.h,库函数QuickSelect.c,测试文件TestQuickSelect. 其 ... 
- BZOJ 3110: [Zjoi2013]K大数查询 [树套树]
		3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6050 Solved: 2007[Submit][Sta ... 
- 二次剩余、三次剩余、k次剩余
		今天研究了一下这块内容...首先是板子 #include <iostream> #include <stdio.h> #include <math.h> #incl ... 
- [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串
		Find the length of the longest substring T of a given string (consists of lowercase letters only) su ... 
- K近邻法(KNN)原理小结
		K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ... 
- YYStock开源----iOS股票K线绘制第二版
		新的股票绘制粗来啦,欢迎围观star的说(*^__^*) 嘻嘻-- 捏合功能也准备完善了 Github:https://github.com/yate1996/YYStock 长按分时图+五档图 分时 ... 
- k近邻算法(knn)的c语言实现
		最近在看knn算法,顺便敲敲代码. knn属于数据挖掘的分类算法.基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别.俗话叫,"随大流&q ... 
随机推荐
- Windows 10环境安装VIM代码补全插件YouCompleteMe
			Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ... 
- --css 控制文字多使用省略号
			--css 控制文字多使用省略号.overflowPoint{ text-overflow:ellipsis;width: 200px;overflow: hidden;}<div class= ... 
- 表连接查询(2-n)
			一 概述 1 背景 理论上将全部数据放到同一张表中很难实现,实际上即使实现了,表也很庞大,很冗杂,不便于查询与维护,因此将不同的数据存放到不同的表中,需要时连接各表进行查询. 2 执行过程 两张表进行 ... 
- java怎么处理json数据
			json = new JSONObject(data); int which = json.optInt("which", -1); String label = json.opt ... 
- 详解react/redux的服务端渲染:页面性能与SEO
			亟待解决的疑问 为什么服务端渲染首屏渲染快?(对比客户端首屏渲染) react客户端渲染的一大痛点就是首屏渲染速度慢问题,因为react是一个单页面应用,大多数的资源需要在首次渲染前就加载 ... 
- SQL Server  Alwayson配置两个节点加共享文件夹仲裁见证
			标签:MSSQL/节点和共享文件夹多数 概述 之前讲过多数节点的仲裁配置,多数节点一般3个节点以上的奇数个节点:常见的是使用3个节点节点多了也是浪费因为Alwayson的只读路由只能利用到一个只读副本 ... 
- .NET平台的ORM分析工具
			众所周知,“ORM”和“性能问题”常常一起出现.ORM通过对开发人员隐藏SQL细节可以大大的提高生产力.然而,它们很容易产生一些未被发现的荒谬查询.通常情况下,数据库管理员可以通过交叉引用有问题的存储 ... 
- Luogu T7152 细胞(递推,矩阵乘法,快速幂)
			Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ... 
- JavaBean规范
			JavaBean规范 (1)JavaBean 类必须是一个公共类,并将其访问属性设置为 public ,如: public class user{ …}(2)JavaBean 类必须有一个空的构造函 ... 
- EL函数和自定义EL函数
			简介 EL原本是JSTL1.0中的技术(所以EL和JSTL感情如此好就是自然的了),但是从JSP2.0开始,EL就分离出来纳入了JSP的标准了.但是EL函数还是和JSTL技术绑定在一起.下面将介绍如何 ... 
