算法笔试模拟题精解之“能量半径”

简介: 题目的含义就是找到距离原点最近的第k个点,并求它的半径。这个题的关键在于排序算法。使用最简单的冒泡排序,时间复杂度O(n^2);使用快速排序等好一点的排序算法,时间复杂度O(nlog(n));也可以使用java中Arrays类中的sort函数。

在线编程介绍

阿里云开发者社区在线编程产品,针对广大开发者学习、实践、面试、应聘、考试认证等打造的免费在线刷题神器。题库来自笔试模拟题、算法大赛模拟题等,界面整洁明了,操作简单,为用户营造专心答题的学习环境。点击链接开始体验:https://developer.aliyun.com/coding

本文为大家介绍其中的 第61题:能量半径 的题目解析,具体如下:

题目描述

题目等级:中等
知识点:二分查找、树状数组

查看题目:能量半径 codancer来到了一个能量平面上的中心,坐标为(0,0),接下来巫师Tom会在q个坐标上放置能量点,每个能量点的能量值为1,为了打败哥斯拉,他需要至少k点的能量,因此他想确定一个最小的整数半径r使得codancer能够从这个圆心为(0,0),半径为r的圆形区域内得到至少k个能量值,请你帮他确定最小的整数半径r。

输入包含三个部分,第一个输入能量点的个数q(1<=q<=100000),第二个输入必须获得的最小能量值k(0<=k<=q),第三个是q个坐标(xi,yi),(-100000<=xi<=100000,-100000<=yi<=100000并且xi和yi都是整数)。
输出一个正整数r,表示最小的半径。
示例1
输入:
4
3
[[1,1],[-1,1],[-1,-1],[2,3]]
输出:
2
注意
当半径为2的时候可以收集到1,1,[-1,-1]处的能量。

解题思路:排序算法

题目的含义就是找到距离原点最近的第k个点,并求它的半径。
计算过程:

  1. 计算每个点到原点的距离,为了减少计算量可以只计算到平方。使用long[n]这样的数组来保存。使用long类型是为了防止平方之后结果超出int类型范围。
  2. 对距离进行从小到大排序
  3. 取排序后的第k个数值开根号,转化为int类型并加1。加1是因为开根号后可能为小数,转化成int类型会直接舍去小数部分,导致结果比实际小一些。

这个题的关键在于排序算法。

使用最简单的冒泡排序,时间复杂度O(n^2);
使用快速排序等好一点的排序算法,时间复杂度O(nlog(n));
也可以使用java中Arrays类中的sort函数。

看完之后是不是有了想法了呢,快来练练手吧>>查看题目:能量半径
image.png

相关文章
|
4月前
|
算法
电子好书发您分享《超全算法笔试 模拟题精解合集》
电子好书发您分享《超全算法笔试 模拟题精解合集》
26 3
|
4月前
|
算法
电子好书发您分享《超全算法笔试 模拟题精解合集》
电子好书发您分享《超全算法笔试 模拟题精解合集》
27 2
|
4天前
|
算法 调度 决策智能
基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理(matlab代码)
基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理(matlab代码)
|
4天前
|
算法 调度
【免费】基于模型预测算法的含储能微网双层能量管理模型(MATLAB)
【免费】基于模型预测算法的含储能微网双层能量管理模型(MATLAB)
|
4天前
|
机器学习/深度学习 算法 调度
基于改进鲸鱼优化算法的微网系统能量优化管理matlab
基于改进鲸鱼优化算法的微网系统能量优化管理matlab
|
3月前
|
编解码 算法 前端开发
往年 | 大疆雷达算法校招笔试题目解析
往年 | 大疆雷达算法校招笔试题目解析
55 1
|
6月前
|
算法
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
35 0
|
8月前
|
机器学习/深度学习 传感器 算法
【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)
【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)
|
10月前
|
存储 算法 调度
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
|
11月前
|
搜索推荐
7大排序算法-- 堆排 快速排序 --精解(下)
7大排序算法-- 堆排 快速排序 --精解(下)
55 0