LeetCode 69.x的平方

LeetCode 69.x的平方

思路:

二分查找。从1到x进行二分查找,每次判断mid的平方是否<=x,

如果是,则更新ans=mid,并缩小区间;

如果不是,则缩小区间;

最后则找到最接近的ans,使得ans的平方<=x且ans+1的平方>x,即ans为x的算术平方根
注意:x数据范围为int型的取值范围,则计算平方的时候需要注意可能会溢出

代码:

复制代码
#include<stdio.h>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;

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

int main()
{
    int target=9;
    Solution *solution=new Solution();
    printf("%d\n",solution->mySqrt(target));
    delete(solution);
    return 0;
}

总结: 做这道题的时候,没有想明白二分能找到最接近的值,脑子可能当时宕机了,,,归根结底还是对二分的理解不透彻。 还有要注意,运算符+(-)的优先级要高于运算符>>(<<),注意要加括号(在此记录)

相关推荐
uhakadotcom1 小时前
Apache Airflow入门指南:数据管道的强大工具
算法·面试·github
跳跳糖炒酸奶1 小时前
第四章、Isaacsim在GUI中构建机器人(2):组装一个简单的机器人
人工智能·python·算法·ubuntu·机器人
绵绵细雨中的乡音2 小时前
动态规划-第六篇
算法·动态规划
程序员黄同学2 小时前
动态规划,如何应用动态规划解决实际问题?
算法·动态规划
march_birds2 小时前
FreeRTOS 与 RT-Thread 事件组对比分析
c语言·单片机·算法·系统架构
斯汤雷3 小时前
Matlab绘图案例,设置图片大小,坐标轴比例为黄金比
数据库·人工智能·算法·matlab·信息可视化
云 无 心 以 出 岫3 小时前
贪心算法QwQ
数据结构·c++·算法·贪心算法
俏布斯3 小时前
算法日常记录
java·算法·leetcode
独好紫罗兰3 小时前
洛谷题单3-P5719 【深基4.例3】分类平均-python-流程图重构
开发语言·python·算法
SheepMeMe4 小时前
蓝桥杯2024省赛PythonB组——日期问题
python·算法·蓝桥杯