Binary367ValidPerfectSquare
直接用0-46340作为范围写的binarysearch, 但其实可以不用如此. 可以以target为上限, 但是要注意mid*mid溢出问题. 解决方法为设置mid为long型.
Math方法
1 = 1
4 = 1 + 3
9 = 1 + 3 + 5
16 = 1 + 3 + 5 + 7
25 = 1 + 3 + 5 + 7 + 9
36 = 1 + 3 + 5 + 7 + 9 + 11
注意for循环里i的上限. 与num/2有关, 但不能是它.
Failed Cases: 1, 4.
比如num==4的时候要加到3, 但num/2 == 2而非3
Failed Case: 2147483647 TLE
因为等于这个数的时候, 加到这个num/2+1的奇数累加值会超过Integer.MAX_VALUE, 所以溢出
Binary69Sqrt(x)
这个有个巧妙之处, 最好用x/mid来比较, 而不要mid*mid否则会溢出. 并且刚才还把x/mid的比较大小和l h
弄反了.
Binary287
cycle的写的不好, 之前没想到是这样. 以后还要再写一遍.