您的位置:首页 > 健康 > 养生 > 代码随想录训练营Day57

代码随想录训练营Day57

2024/10/5 14:31:11 来源:https://blog.csdn.net/wcy200097/article/details/140217267  浏览:    关键词:代码随想录训练营Day57

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、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;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com