前段时间在网上看到一些准备找工作的人会在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 = 返回 [[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个最近的点的更多相关文章

  1. django模型操作

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表        

  2. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  3. 【开源】专业K线绘制[K线主副图、趋势图、成交量、滚动、放大缩小、MACD、KDJ等)

    这是一个iOS项目雅黑深邃的K线的绘制. 实现功能包括K线主副图.趋势图.成交量.滚动.放大缩小.MACD.KDJ,长按显示辅助线等功能 预览图 最后的最后,这是项目的开源地址:https://git ...

  4. 找到第k个最小元----快速选择

    此算法借用快速排序算法. 这个快速选择算法主要利用递归调用,数组存储方式.包含3个文件,头文件QuickSelect.h,库函数QuickSelect.c,测试文件TestQuickSelect. 其 ...

  5. BZOJ 3110: [Zjoi2013]K大数查询 [树套树]

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 6050  Solved: 2007[Submit][Sta ...

  6. 二次剩余、三次剩余、k次剩余

    今天研究了一下这块内容...首先是板子 #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  7. [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 ...

  8. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  9. YYStock开源----iOS股票K线绘制第二版

    新的股票绘制粗来啦,欢迎围观star的说(*^__^*) 嘻嘻-- 捏合功能也准备完善了 Github:https://github.com/yate1996/YYStock 长按分时图+五档图 分时 ...

  10. k近邻算法(knn)的c语言实现

    最近在看knn算法,顺便敲敲代码. knn属于数据挖掘的分类算法.基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别.俗话叫,"随大流&q ...

随机推荐

  1. wildfly10报错2:ID注释有错

    13:55:56,612 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final 13:55:56,891 INFO [or ...

  2. C#中的Dictionary的使用

    在工作中有时候会用到Dictionary,由于自己之前没用过,参考了一下前人和先辈的实践,仿照着写了一个Test,第一次用还不是很熟练,要多实践练习才能用的得心应手,写代码重在敲键盘,以此为诫.(主要 ...

  3. 微信js-sdk接口的使用及ios深坑

    最近再做微信公众号开发,涉及到手机上传图片和拍照的功能. 思路一:使用<input type="file" name="pic" id="pic ...

  4. js将字符串转化成函数:eval(logOutCallbackFun+"()");

    js将字符串转化成函数:eval(logOutCallbackFun+"()");

  5. Mac QQ 怎么清除聊天记录

    在 Mac 电脑上登录 QQ 以后,点击顶部菜单中“应用”下的“消息管理器”选项,如图所示

  6. Swift 求余运算

    求余运算 求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数). 注意:求余运算(%)在其他语言也叫取模运算.然而严格说来,我们看该运算符对负数的操作结果,"求 ...

  7. 这可能是最low的发布dotnet core站点到centos7

    前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...

  8. django-xadmin隐藏菜单不显示

    环境:https://github.com/y2kconnect/xadmin-for-python3.git python3.5 django1.9.12 在adminx.py中的Admin类增加属 ...

  9. 【LeetCode】191. Number of 1 Bits

    题目: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also ...

  10. 百度搜索效果(jsonp法)

    百度搜索效果(jsonp法): 不需要放在服务器中,本地就可以执行 <!DOCTYPE html> <html> <head> <meta charset=& ...