提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、X的平方根
- 二、有效的完全平方数
前言
提示:这里可以添加本文要记录的大概内容:
今天是跟着代码随想录刷题的第57天,继续复习数组的内容
提示:以下是本篇文章正文内容,下面案例可供参考
一、X的平方根
思路:就是二分,重点注意可能会超时,所以不能用middle*middle<x,而是要middle<x/middle,然后把0和1的情况单独说
代码:
class Solution {
public:int mySqrt(int x) {if(x==0) return 0;if(x==1) return 1;int left=0;int right=x;while(left<=right){int middle=left+(right-left)/2;if(middle<x/middle){left=middle+1;}else if(middle==x/middle){return middle;}else{right=middle-1;}}return right;}
};
二、有效的完全平方数
思路:这道题注意要用long定义middle*middle因为可能会越界
代码:
class Solution {
public:bool isPerfectSquare(int num) {int left = 0, right = num;while (left <= right) {long mid = (right - left) / 2 + left;long square = mid * mid;if (square < num) {left = mid + 1;} else if (square > num) {right = mid - 1;} else {return true;}}return false;}
};