LeetCode 1954. 收集足够苹果的最小花园周长

一、题目

1、题目描述

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

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

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

|x| 的值定义为:

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

2、接口描述

class Solution {
public:
    long long minimumPerimeter(long long neededApples) {
    }
};

3、原题链接

1954. 收集足够苹果的最小花园周长


二、解题报告

1、思路分析

每个位置是|i| + |j|个苹果,而且限制区域为以原点为中心的正方形,那么一定是有数学规律的。

其实可以分为四个数目相等的区域,为什么呢?

可以由|x| + |y| = k的函数图像得知,也可以观察发现

我们只需要计算出一个区域内的值然后乘4即可

我们设边长2n(由于以原点为中心,所以边长为偶数)

那么对于一个区域来说有n行n+1列

第一行为(n+1) * n / 2,每一行都比前一行多n,显然是首项为(n+1) * n / 2公差为n的等差数列

我们求得一个区域的总数然后乘4即可

sum = 4*n^3 + 6*n^2 + 2*n 

2、复杂度

由于log(1000000)大概也就20上下,所以时间复杂度为O(1)

时间复杂度: O(1) 空间复杂度:O(1)

3、代码详解

class Solution {
public:
    long long minimumPerimeter(long long neededApples) {
        long long l = 1  , r = 1000000 , s = 0 , mid = 0;
        while(l < r)
        {
            mid = (l + r) >> 1;
            s = (4*mid*mid*mid + 6*mid*mid + 2*mid);
            if(s >= neededApples) r = mid;
            else l = mid + 1;
        }
        return r << 3;
    }
};

相关推荐

  1. leetcode154 寻找旋转排序数组中值 II

    2023-12-24 18:10:02       49 阅读
  2. 力扣-1984. 学生分数差值

    2023-12-24 18:10:02       30 阅读
  3. 1984. 学生分数差值

    2023-12-24 18:10:02       23 阅读
  4. LeetCode 746. 使用花费爬楼梯

    2023-12-24 18:10:02       72 阅读
  5. 动态规划 Leetcode 746 使用花费爬楼梯

    2023-12-24 18:10:02       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 18:10:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 18:10:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 18:10:02       82 阅读
  4. Python语言-面向对象

    2023-12-24 18:10:02       91 阅读

热门阅读

  1. npm使用详解(好吧好吧是粗解)

    2023-12-24 18:10:02       63 阅读
  2. 机器学习之实验过程02

    2023-12-24 18:10:02       53 阅读
  3. Starknet 命令行工具之Starkli | 使用Starkli部署合约

    2023-12-24 18:10:02       52 阅读
  4. 前端八股文(js篇 )

    2023-12-24 18:10:02       56 阅读
  5. 自动编码器图像去噪 Python

    2023-12-24 18:10:02       51 阅读
  6. 文件包含

    2023-12-24 18:10:02       51 阅读
  7. (C)一些题15

    2023-12-24 18:10:02       48 阅读
  8. Sepolia 和 Holesky 测试网对比

    2023-12-24 18:10:02       66 阅读
  9. LeetCode,第377场周赛,个人题解

    2023-12-24 18:10:02       50 阅读
  10. django框架、断言、请求与响应

    2023-12-24 18:10:02       60 阅读
  11. 谈谈如何保持对计算机的学习兴趣

    2023-12-24 18:10:02       71 阅读