LeetCode第 252 场周赛 之5187. 收集足够苹果的最小花园周长

LeetCode第 252 场周赛 之5187. 收集足够苹果的最小花园周长


)


前言

数学知识

一,5187. 收集足够苹果的最小花园周长

给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| + |j| 个苹果。

你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 ,且每条边都与两条坐标轴之一平行。

给你一个整数 neededApples ,请你返回土地的 最小周长 ,使得 至少 有 neededApples 个苹果在土地 里面或者边缘上。

|x| 的值定义为:

如果 x >= 0 ,那么值为 x
如果 x < 0 ,那么值为 -x

示例 1:
在这里插入图片描述

输入:neededApples = 1
输出:8
解释:边长长度为 1 的正方形不包含任何苹果。
但是边长为 2 的正方形包含 12 个苹果(如上图所示)。
周长为 2 * 4 = 8

示例 2:

输入:neededApples = 13
输出:16

示例 3:

输入:neededApples = 1000000000
输出:5040

提示:

1 <= neededApples <= 1015

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-garden-perimeter-to-collect-enough-apples
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二,解题思路

一个项限推理找规律

在这里插入图片描述

上面推理一个象限的公式 只需要乘以4就可以了

N ⃗ \vec N N ⟹ \Longrightarrow [ n w − 1 n_{w - 1} nw1+ n w − 2 n_{w - 2} nw2+ …+ n 1 n_1 n1]

一个象限中全部的值: N ⃗ \vec N N * (2n -1)

全部象限中的值是 : S ( n ) S(n) S(n) = N ⃗ \vec N N * (2n -1) * 4

公式: S ( n ) S(n) S(n) = N ⃗ \vec N N * (2n -1) * 4

三, 代码

long long minimumPerimeter(long long neededApples)
{
    long long ans = 0;  
    long long need = 0;
    for (long long  i  = 1; i < 1e15+1; ++i)
    {
    	//一个象限中 (1 + 2 + ... + n) 
        need +=i;
        ans =   (need * (2* i +1)) * 4 ;
        if ( ans >= neededApples) 
        {
            return i * 8;
        }
    }
    return ans;
}

总结

时间复杂度 O ( N ) O(N) O(N)

源码地址:https://github.com/chensongpoixs/cleet_code

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值