网站直播是未开票收入怎么做,推广方法英文,wordpress 代码详解,网站模板有哪些本题想到使用二分法不断逼近一个区间#xff0c;直到最后趋近于x#xff0c;从而求得解。注意的点#xff0c;一开始使用
if(mid * mid x) 进行判断时#xff0c;会出现越界#xff0c;原因是输入一个很大的数是#xff0c;超过int表示的范围#xff0c;继而修改为…本题想到使用二分法不断逼近一个区间直到最后趋近于x从而求得解。注意的点一开始使用
if(mid * mid x) 进行判断时会出现越界原因是输入一个很大的数是超过int表示的范围继而修改为这种判断形式
if( mid x/mid)需要注意的是这种判断方式存在一定的精度问题
这种判断方式有需要确保 mid 的值不为 0那么左区间就需要从1开始。 那么当输入 x 的值为0时只需要不进入while循环直接返回 ans初始值0即可。 如果使用力扣官方题解mid 设置为 long long类型则无须这样处理。
class Solution {
public:int mySqrt(int x) {int left 1;int right x;int ans 0;while(left right){int mid left (right - left)/2;if( mid x/mid){left mid 1;ans mid;}else if( mid x/mid){right mid - 1;}}return ans;}
};