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

面试算法72:求平方根

题目

输入一个非负整数,请计算它的平方根。正数的平方根有两个,只输出其中的正数平方根。如果平方根不是整数,那么只需要输出它的整数部分。例如,如果输入4则输出2;如果输入18则输出4。

分析

整数n的平方根一定小于或等于n。同时,除0之外的所有整数的平方根都大于或等于1。因此,整数n的平方根一定在从1到n的范围内,取这个范围内的中间数字m,并判断m2是否小于或等于n。如果m2≤n,那么接着判断(m+1)2是否大于n。如果满足(m+1)2>n,那么m就是n的平方根。

public class Test {public static void main(String[] args) {System.out.println(mySqrt(18));}public static int mySqrt(int n) {int left = 1;int right = n;while (left <= right) {int mid = left + (right - left) / 2;if (mid <= n / mid) {if ((mid + 1) > n / (mid + 1)) {return mid;}left = mid + 1;}else {right = mid - 1;}}return 0;}
}

相关文章:

  • Redis基础-Redis概念及常见命令
  • 使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理
  • CentOS系统环境搭建(二十五)——使用docker compose安装mysql
  • Postman调用HTTPS需要配置
  • 中国信通院「星熠」案例公布,个推消息推送获评绿色SDK产品优秀案例
  • 外卖系统开发:构建高效、安全的外卖平台
  • 什么猫粮比较好?最受欢迎猫咪喜爱的5款主食冻干推荐!
  • 服务器系统时间不同步如何处理
  • 【网络安全】Log4j 远程代码执行漏洞解析
  • 机器学习之实验过程01
  • 一文掌握 Vue3 + Express 大文件分片上传、断点续传、秒传技巧!
  • PSINS四元数转换函数rv2q
  • 在Excel中,如何简单快速地删除重复项,这里提供详细步骤
  • Linux系统中跟TCP相关的内核参数
  • 千帆起航:探索百度智能云千帆AppBuilder在AI原生应用开发中的革新之路
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2017年终总结、随想
  • Android交互
  • Bytom交易说明(账户管理模式)
  • CSS 专业技巧
  • ES6核心特性
  • gcc介绍及安装
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JavaScript实现分页效果
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL主从复制读写分离及奇怪的问题
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • 当SetTimeout遇到了字符串
  • 每天一个设计模式之命令模式
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 深度学习入门:10门免费线上课程推荐
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 仓管云——企业云erp功能有哪些?
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #stm32驱动外设模块总结w5500模块
  • (42)STM32——LCD显示屏实验笔记
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (三)elasticsearch 源码之启动流程分析
  • (一)插入排序
  • (转载)利用webkit抓取动态网页和链接
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 的字符串暂存池
  • .net中调用windows performance记录性能信息
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/sudoer文件配置简析
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Validated和@Valid校验参数区别
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解