思路一:从1开始逐个查找
思路一昰最先能想到的简单粗暴的解法从数字1开始找,一旦找到平方值等于x的数字i直接返回i。如果找到平方值大于x的数字i需要返回i - 1。
需要紸意的是为了防止做乘法运算时越界,需要强转为long类型
思路一的时间复杂度太高,可以用二分法进行改进
需要注意的是,二分查找法查找到的mid值并不是最终能够返回的值我们需要做进一步的判断。如果此时mid * mid大于x我们需要返回的是mid - 1。如果mid * mid <= x我们才可以返回mid。
运算过程中涉及到乘法运算时同样需要强转为long类型防止越界
时间复杂度是O(logx)。空间复杂度是O(1)