/*
* @lc app=leetcode.cn id=69 lang=c
*
* [69] x 的平方根
*
* https://leetcode-cn.com/problems/sqrtx/description/
*
* algorithms
* Easy (33.91%)
* Total Accepted: 22.9K
* Total Submissions: 66.4K
* Testcase Example: '4'
*
* 实现 int sqrt(int x) 函数。
*
* 计算并返回 x 的平方根,其中 x 是非负整数。
*
* 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
*
* 示例 1:
*
* 输入: 4
* 输出: 2
*
*
* 示例 2:
*
* 输入: 8
* 输出: 2
* 说明: 8 的平方根是 2.82842...,
* 由于返回类型是整数,小数部分将被舍去。
*
*
*/
#include <stdio.h>
int mySqrt(int x) {
if(x==1)
return 1;
if(x==0)
return 0;
int i;
long long sum=1;
for (i=1; i < 46340&&sum<=x;i++){
if((i+1)*(i+1)>x)
return i;
sum = i * i;
}
return i;
}
/* int main(){
printf("%d", mySqrt(100));
return 0;
}
*/
因为int最大值的根号不会超过46340.9,所以对开跟结果i进行限制,避免溢出,其他思路是很简单的暴力法.
测试结果
√ Accepted
√ 1017/1017 cases passed (224 ms)
[WARN] Failed to get submission beat ratio.