zoukankan      html  css  js  c++  java
  • leetcode笔记:Sqrt(x)

    一. 题目描写叙述

    Implement int sqrt(int x).
    Compute and return the square root of x.

    二. 题目分析

    该题要求实现求根公式,该题还算是比較简单的,由于仅仅需返回最接近的整数,直接二分法就可以。在实现的过程中还是有一些细节的,比方推断条件:x / mid > mid而不能是x > mid * mid。由于mid * mid会导致溢出。

    三. 演示样例代码

    #include <iostream>
    
    using namespace std;
    
    class Solution
    {
    public:
        int sqrt(int x)
        {
            if (x == 0 || x == 1) return x;
            int min = 1, max = x / 2; // 根必在此区间中
            // 二分查找
            int mid, result;
            while (min <= max)
            {
                mid = min + (max - min) / 2;
                if (x / mid > mid)
                {               
                    // 根的平方需小于等于x,因此每次须在此处更新根的值
                    result = mid; 
                    min = mid + 1;
                }
                else if (x / mid < mid) max = mid - 1;
                else return mid;
            }
            return result;
        }
    };

    一些执行结果:

    这里写图片描写叙述

    四. 小结

    此题为分治思路的经典题型之中的一个。

  • 相关阅读:
    集成学习方法
    nlp知识
    kaggle竞赛入门整理
    pandas知识点
    EM算法
    特征工程
    【clustering】之K-means && K-medoids
    sklearn学习笔记
    周总结十二
    《如何高效学习》读书笔记五
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7353719.html
Copyright © 2011-2022 走看看