题目描述:
题解:
如果正方形土地的右上角坐标为 (n, n),周长为 8n,那么其中包含的苹果总数为:
Sn=2n(n+1)(2n+1)
对于坐标为 (x,y) 的树,它有 ∣x∣+∣y∣ 个苹果。因此,一块右上角坐标为 (n,n) 的正方形土地包含的苹果总数为
由于 x 和 y 是对称的,因此:
解法1:暴力枚举
从小到大枚举 n,直到 2n(n+1)(2n+1)≥neededApples 为止。
解法2:二分查找
由于 S那是随着 n 单调递增的,可以通过二分查找的方法,找出最小的满足条件的n
class Solution:def minimumPerimeter(self, neededApples: int) -> int:left = 1mid = 0right = 100000while(left<=right):mid = int((left + right) /2)if(2 * mid * (mid + 1) * (2 * mid + 1) >=neededApples):ans = midright = mid - 1else:left = mid + 1return ans*8 #周长为8n


