提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、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;}
};