首页 > 其他分享 >3. LeetCode 69. x的平方根

3. LeetCode 69. x的平方根

时间:2023-05-13 17:55:51浏览次数:42  
标签:right int mid long 69 平方根 LeetCode left

 

 代码:

class Solution {
public:
    int mySqrt(int x) {
        long long a = (long long)x;
        long long left = 0;
        long long right = a;
        while (left <= right) {
            long long mid = left + ((right - left) >> 1);
            if (mid * mid <= a) {
                if (((mid + 1) * (mid + 1)) > a) {
                    return (int)mid;
                }
                else {
                    left = mid + 1;
                }
            }
            else {
                right = mid - 1;
            }
        }
        return 0;

    }
};

思路:

1. 计算x的算术平方根的整数部分,假设这个值是a。那么a就是从0到x的数组中的最后一个元素值的平方小于等于x的元素的值。

2. 考虑到x最大值为2^31-1,如果用二分查找,mid * mid 就溢出了。所以先强转成long long型。

标签:right,int,mid,long,69,平方根,LeetCode,left
From: https://www.cnblogs.com/konosekai/p/17397823.html

相关文章

  • 【二分查找】LeetCode 74. 搜索二维矩阵思路
    题目链接74.搜索二维矩阵思路思路因为矩阵中每行都按升序排列,且每行的第一个整数大于前一行的最后一个整数。所以整个矩阵其实就是一个大的升序的一维数组,可以使用二分查找的方法对“一维数组”进行搜索,只不过在获取元素的过程中需要进行一步一维索引到二维索引的映射。代码......
  • 【二分查找】LeetCode 162. 寻找峰值思路
    题目链接162.寻找峰值思路思路一个不严谨但是好理解的思路是:如果\(nums[mid]>nums[mid+1]\),那么\(nums[mid+1]\)肯定不是峰值,此时让\(right=mid\),从左边继续找峰值。反之则\(nums[mid]\)肯定不为峰值,让\(left=mid+1\)。代码classSolution{public......
  • 【二分查找】LeetCode 278. 第一个错误的版本
    题目链接278.第一个错误的版本思路二分查找代码publicclassSolutionextendsVersionControl{publicintfirstBadVersion(intn){intleft=1,right=n-1;while(left<=right){intmid=left+(right-left)/2;......
  • #yyds干货盘点# LeetCode程序员面试金典:对称二叉树
    1.简述:给你一个二叉树的根节点root,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false2.代码实现:classSolution{publicbooleanisSymmetric(TreeNoderoot){returncheck(root,root);}......
  • 1. LeetCode 35. 力扣第一题
    按照代码随想录的顺序,今天刷了LeetCode35.搜索插入位置,也是刷的力扣第一题classSolution{public:intsearchInsert(vector<int>&nums,inttarget){intleft=0;intright=nums.size()-1;while(left<=right){intm......
  • 罗克韦尔Modbus-RTU通讯程序 硬件配置:1769-SM2 软件版本:Studi
    罗克韦尔Modbus-RTU通讯程序硬件配置:1769-SM2软件版本:Studio5000V32实现以下功能:RS485通讯MODBUS-RTU模式1:读取从站数据2:写入从站数据3:查看从站通讯成功失败状态4:查看从站通讯错误故障代码5:查看单周期和全周期时间单个端口支持32站点,3端口96站点。支持并发3端口最大512点......
  • leetcode 1251 平均售價
    leetcode1251平均售價selectr.product_id,round(sum(r.price*r.units)/sum(r.units),2)asaverage_pricefrom(selectp.product_id,p.price,u.unitsfromPricespleftjoinUnitsSolduonp.product_id=u.product_idwhereu.purchase_......
  • leetcode 1280 學生們參加各科測試的次數
    leetcode1280學生們參加各科測試的次數 selects.student_id,s.student_name,st.subject_name,if(e.result,e.result,0)asattended_examsfromStudentssjoinSubjectsstleftjoin(selectstudent_id,subject_name,count(*)asresultfromExaminatio......
  • leetcode 1084 销售分析III
    leetcode1084销售分析IIIselectdistinctp.product_id,p.product_namefromProductpleftjoinSalessonp.product_id=s.product_idwheres.product_idnotin(selectproduct_idfromSaleswheresale_date<'2019-01-01'orsale_d......
  • leetcode 1045 买下所有产品的客户
    leetcode1045买下所有产品的客户selectcustomer_idfromCustomercleftjoinProductponc.product_key=p.product_keygroupbycustomer_idhavingcount(distinctc.product_key)=(selectcount(*)fromProduct) selectcustomer_idfrom(selectdis......