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

面试热题(x的平方根)

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

       这道题虽然是简单题,可它表现的也不是那么简单,刚看到题的时候,我也想的是用内置函数,可是正当我写的时候,看到了题目的要求(可我还是用)

return (int)Math.pow(x,0.5);

 我又拿了其他方式写了几次,现在给大家分享一下我的做题思路

第一种方式(找区间):

我们可以假设为该区间是由红绿颜色组成的,红色代表的是小于等于目标值,绿色代表大于目标值,这样:

 通过不断的移动,指针终会从红色变为绿色,我们求的目标值就是红色区域的最后一个元素

 //利用二分查找进行求解public int mySqrt(int x) {if(x==0||x==1){return x;}int r=find(x,0,x);return r-1;}public boolean isGree(int val,int x){return (long)val*val>x;}public int find(int x,int left,int right){if(left>right){return 0;}//找到最右侧的第一个红色while(left<right){int mid=left+(right-left)/2;if(isGree(mid,x)){right=mid;}else{left=mid+1;}}return left;}

 方法二(普通的二分搜索)

    public int mySqrt(int x) {if(x==0||x==1){return x;}int left=0;int  right=x;while(left<=right){int mid=left+(right-left)/2;if(mid==x/mid){return mid;}else if(mid<x/mid){left=mid+1;}else{right=mid-1;}}return right;}

方法三(最右侧的二分搜索):

       这种方法我觉的你学会了你才是对二分搜索有了一定的理解,它的取值范围还是它的边界初始值,因为这种靠左侧靠右侧的方法训话条件都是left<right,而不是left等于right,因为题目中给定的参数根号x是可以取到的,所以我们为了凑写个条件写成right=x+1,这样就可以套我们的模板了,具体模板看一起学算法(二分搜索篇)

 public int mySqrt(int x) {if(x==0||x==1){return x;}int left=0;int  right=x+1;while(left<right){int mid=left+(right-left)/2;if(mid<=x/mid){left=mid+1;}else{right=mid;}}return left-1;}

模板就套好了,当我提交的时候,错了!!!

 最后几个居然过不去,遇到这种情况过不去,千万别回头检查代码的问题,过了90%多的代码一般不会出现什么大的问题,我建议的方法是直接打表

      if(x==2147483647){return 46340;}

然后过了,这种直接打表的方式还是很好用的,效率也嘎嘎高!!!

相关文章:

面试热题(x的平方根)

给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 这道题虽然是简单题…...

食品溯源合约 -- 智能合约实例

前提 Roles: 实现对用户地址的角色权限管控,添加、删除角色。 Producer: 生产商角色管控。 ... FoodInfoItem: 食品信息管控。生产商、中间商、超市添加食品信息。 Trace:食品溯源合约,主要负责对以上几个合约的统筹协作。 Roles // SPDX-License-Identifier: MIT pragm…...

SAP系统中二代增强提供了4中增强函数的查找方法

1 Introduction The second enhancement is used widely by sap .We can set break-point in the function . The function is in the SMOD FG. 2 Detail SAP系统中二代增强提供了4中增强函数的查找方法&#xff1a; MODX_ALL_ACTIVE_MENUENTRIES (菜单增强) MODX_FUNCTION…...

RabbitMQ-SpringBoot2

1.依赖引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2.配置文件 spring: rabbitmq: host: 192.168.2.17 port: 5672 usernam…...

MyBatis核心 - SqlSession如何通过Mapper接口生成Mapper对象

书接上文 MyBatis – 执行流程 我们通过SqlSession获取到了UserMapper对象&#xff0c;代码如下&#xff1a; // 获取SqlSession对象 SqlSession sqlSession sqlSessionFactory.openSession();// 执行查询操作 try {// 获取映射器接口UserMapper userMapper sqlSession.get…...

【Git】标签管理与Git Flow模型

目录 一、操作标签 二、推送标签 三、删除标签 四、Git Flow模型分支设计 一、操作标签 git tag # 查看有哪些标签 git tag [name] # 给最近一次commit打标签 git tag [name] [commitID] #给指定的commit打标签 git tag -a [name] -m desc # 打标签并添加描述 二、推送标…...

日志分析和流量分析

目录 [陇剑杯 2021]日志分析&#xff08;问1&#xff09; [陇剑杯 2021]日志分析&#xff08;问2&#xff09; [陇剑杯 2021]日志分析&#xff08;问3&#xff09; [陇剑杯 2021]简单日志分析&#xff08;问1&#xff09; [陇剑杯 2021]简单日志分析&#xff08;问3&#…...

typescript基础之关键字type

TypeScript的type是一个关键字&#xff0c;用来定义一个类型别名https://www.typescripttutorial.net/typescript-tutorial/typescript-types/。类型别名可以给一个已有的类型起一个新的名字&#xff0c;或者组合多个类型成为一个新的类型。例如&#xff1a; // 给string类型起…...

无人机航测技术有何特点?主要应用在哪些方面?

无人机航测是航空摄影测量的一种&#xff0c;主要面向低空遥感领域&#xff0c;具有成本低、快速高效、适用范围广等特点。目前&#xff0c;无人机航测主要应用于地形测绘、城市数字化建设、工程建设等方面。 无人机航测技术的特点 1、作业成本低 传统的人工测量技术主要利用…...

24届近5年杭州电子科技大学自动化考研院校分析

今天给大家带来的是杭州电子科技大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、杭州电子科技大学 学校简介 杭州电子科技大学&#xff08;Hangzhou Dianzi University&#xff09;&#xff0c;简称“杭电”&#xff0c;位于杭州市&#xff0c;是浙江省人民政…...

调整vscode

调整vscode 连wifi linux连接wifi...

Spring xml 方式整合mybatis 第三方框架

Spring整合MyBatis MyBatis提供了mybatis-spring.jar专门用于两大框架的整合。 ①&#xff1a;第一步&#xff1a; 导入MyBatis整合Spring的相关坐标&#xff1b; <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency><groupI…...

RabbitMQ(二) - RabbitMQ与消息发布确认与返回、消费确认

RabbitMQ消息确认 SpringBoot与RabbitMQ整合后&#xff0c;对RabbitClient的“确认”进行了封装、使用方式与RabbitMQ官网不一致&#xff1b; 消息发布确认 生产者给交换机发送消息后、若是不管了&#xff0c;则会出现消息丢失&#xff1b; 解决方案1&#xff1a; 交换机接受…...

操作指南 | 如何使用Chainlink喂价功能获取价格数据

Chainlink的去中心化预言机网络中的智能合约包含由运行商为其他智能合约&#xff08;DApps&#xff09;使用或截取所持续更新的实施价格数据。其中有两个主要架构&#xff1a;喂价和基础要求模型。此教程将会展现如何在Moonbeam、Moonriver或是Moonbase Alpha测试网上使用喂价功…...

Pandaer的iPhone手机壳

哇塞&#xff0c;Pandaer的设计太棒了&#xff01;手机壳的花样多到让我眼花缭乱&#xff0c;好多系列设计都很有意思&#xff0c;让人有集齐的冲动。我最近入手了几个iPhone的手机壳&#xff0c;它有亮色和透明的款式&#xff0c;亮色的壳内部也是亮的&#xff0c;因为手机壳全…...

将自己的网站免费发布到互联网上【无需公网IP】

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…...

浅谈 Python中if __name__ == ‘__main__‘:的工作原理

为了理解if __name__ __main__:的工作原理&#xff0c;我们需要先了解Python中的特殊变量__name__。 每个Python模块都有一个内置的变量__name__。这个变量的值取决于如何执行模块&#xff1a; 如果模块是被直接运行的&#xff08;例如&#xff0c;你使用命令python myscrip…...

【力扣】344. 反转字符串 <首尾指针>

【力扣】344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a; 输入&#xff1a;s …...

Kubectl 详解

目录 陈述式资源管理方法&#xff1a;项目的生命周期&#xff1a;创建-->发布-->更新-->回滚-->删除声明式管理方法&#xff1a; 陈述式资源管理方法&#xff1a; kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口kubectl 是官方的CL…...

华为OD面试记录

The experience of applying for software test engineer(Dispatcher) 记录保存 招聘岗位: 测试工程师 Base:西安 华为面试流程如下&#xff1a; 流程名内容机试三题,总分400分,最后一道题200分人力资源面试询问私人问题&#xff0c;不谈薪资一面技术面二面技术面主管问项目…...

避坑指南:在Linux DRM驱动开发中,实现plane的update_plane回调时要注意哪些检查?

Linux DRM驱动开发实战&#xff1a;update_plane回调必须处理的4大核心检查 当你为一块新的显示控制器编写DRM驱动时&#xff0c;update_plane回调函数就像是在走钢丝——内核框架已经帮你过滤了明显的错误&#xff0c;但剩下的每一步操作都直接影响显示稳定性和系统可靠性。本…...

安卓梦幻互通专用多开切换器|回合制手游多账号快速切换工具(附详细图文教程)

温馨提示&#xff1a;文末有联系方式工具核心定位&#xff1a;安全纯净&#xff0c;专注高效切换 本工具为专为安卓平台设计的轻量级多账号切换解决方案&#xff0c;全程绿色免安装插件&#xff0c;界面无任何广告干扰&#xff0c;严格遵循隐私规范——不访问、不读取、不上传任…...

从网球场到棋盘:深入对比Moravec与Forstner算子在真实影像中的表现差异与选型建议

从网球场到棋盘&#xff1a;深入对比Moravec与Forstner算子在真实影像中的表现差异与选型建议 当我们需要从一张照片中找出那些独特的"地标"时——无论是网球场的边角线还是棋盘上的交叉点——特征点提取算法就像一位经验丰富的侦探&#xff0c;用不同的策略标记出关…...

保姆级教程:在Windows 10/11上快速搭建mosquitto MQTT服务器,并用MQTTX客户端测试(附常见错误解决)

Windows平台零门槛搭建MQTT开发环境&#xff1a;从Mosquitto配置到MQTTX实战 最近在调试ESP32温湿度传感器时&#xff0c;发现直接连接公有MQTT服务器总遇到网络延迟问题。于是决定在本地搭建一个轻量级MQTT Broker&#xff0c;没想到整个过程比预想的顺畅许多——从Mosquitto…...

AI赋能开发:让快马智能生成具备数据清洗与自然语言查询的行情网站

最近在做一个Python行情网站的项目&#xff0c;发现AI辅助开发真的能大幅提升效率。特别是数据清洗和自然语言处理这些传统上比较繁琐的部分&#xff0c;借助InsCode(快马)平台的AI能力&#xff0c;整个过程变得轻松多了。分享一下我的实践心得&#xff1a; 数据清洗自动化 行情…...

从ROS1到ROS2:手把手教你移植hdl_localization激光点云定位包(含完整CMakeLists.txt修改指南)

从ROS1到ROS2&#xff1a;激光点云定位包的现代化移植实战指南 激光SLAM技术正在经历从ROS1到ROS2的范式迁移浪潮。作为核心定位算法之一&#xff0c;hdl_localization的移植不仅是构建系统的转换&#xff0c;更是一次架构思维的升级。本文将带您深入理解ament_cmake的模块化设…...

数据库自动化指标采集与智能评分系统实践与构想

在数据库运维中&#xff0c;定期巡检是保障系统稳定性的基石。作者结合 MySQL 的运行机制&#xff0c;使用 Python 自主开发了一套数据库巡检脚本。本文将演示如何通过该脚本自动化采集 MySQL 的关键性能指标、生成可视化 HTML 报告&#xff0c;并引入综合评分机制评估数据库健…...

自然语言理解在AI原生应用领域的关键作用

自然语言理解在AI原生应用领域的关键作用关键词&#xff1a;自然语言理解&#xff08;NLU&#xff09;、AI原生应用、大语言模型、多模态交互、意图识别、情感分析、智能交互摘要&#xff1a;本文将深入探讨自然语言理解&#xff08;NLU&#xff09;如何成为AI原生应用的“大脑…...

从仿真到上板:手把手教你用Vivado搭建一个“永不停机”的FFT信号处理链路(附Testbench)

从仿真到上板&#xff1a;构建高可靠FFT信号处理系统的全流程实战 在数字信号处理领域&#xff0c;快速傅里叶变换&#xff08;FFT&#xff09;作为频谱分析的核心算法&#xff0c;其硬件实现一直是FPGA工程师的必备技能。本文将带您从仿真环境搭建开始&#xff0c;逐步完成一…...

2026届最火的五大降AI率助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减低AIGC检测率要从多方面入手&#xff0c;首先&#xff0c;调整句式结构&#xff0c;避开过…...