首页 > 编程语言 >【教3妹学编程-算法题】收集足够苹果的最小花园周长

【教3妹学编程-算法题】收集足够苹果的最小花园周长

时间:2024-01-02 10:31:53浏览次数:33  
标签:周长 示例 编程 long 妹学 neededApples 正方形 苹果 花园

【教3妹学编程-算法题】收集足够苹果的最小花园周长_二维

3妹:“在小小的花园里面挖呀挖呀挖,种小小的种子开小小的花”
2哥 : 3妹也会唱这首儿歌呀, 这首儿歌在五一期间很火啊。
3妹:是呀, 小朋友们都喜欢唱,我这个200多个月的大朋友也喜欢唱,哈哈
2哥 : 甜美的歌声加上黄老师甜美的外表,很治愈!
3妹:“在特别大的花园里面挖呀挖呀挖,种特别大的种子开特别大的花~~~”
2哥:说到花园,我这里有一首关于小花园的题目,3 妹先做完题目再挖吧

【教3妹学编程-算法题】收集足够苹果的最小花园周长_二维_02

 1题目: 

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

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

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

|x| 的值定义为:

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

示例 1:


【教3妹学编程-算法题】收集足够苹果的最小花园周长_二维_03


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

输入:neededApples = 13
输出:16
示例 3:

输入:neededApples = 1000000000
输出:5040

提示:

1 <= neededApples <= 10^15

 2思路: 

【教3妹学编程-算法题】收集足够苹果的最小花园周长_坐标轴_04

枚举,
如果正方形土地的右上角坐标为 (n,n)(n, n)(n,n),即边长为 2n2n2n,周长为 8n8n8n,那么其中包含的苹果总数为:

Sn=2n(n+1)(2n+1)。详解如代码:

 3java代码: 

class Solution {
    public long minimumPerimeter(long neededApples) {
        long n = 1;
        while (2 * n * (n + 1) * (2 * n + 1) < neededApples) {
            n++;
        }
        return n * 8;
    }
}

标签:周长,示例,编程,long,妹学,neededApples,正方形,苹果,花园
From: https://blog.51cto.com/u_6813689/9064011

相关文章

  • 自建服务器,无需服务器、不用编程。
    大家好,我是JavaPub.这几年自媒体原来热,很多人都知道了个人IP的重要性。连一个搞中医的朋友都要要做一个自己的网站,而且不想学编程、还不想花RMB租云服务。老读者都知道,博主是个实战派。搭建网站这种事,手到擒来。但是这位朋友这为一个外行人,这个教程必要做到保姆级、手把手。当......
  • 【教3妹学编程-算法题】一年中的第几天
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥 :3妹,什么事呀这么开森。3妹:2哥你看今天的天气多好啊,经过了一周多的寒潮,天气总算暖和些了。2哥:是啊,都说一九二九不出手,三九四九冰上走,这才一九就已经可以冰上走了。3妹:上海这边虽然也挺冷了,但是还算好,想想北方都已经......
  • 谈谈计算机编程语言里的 literal(字面量)
    在编程语言中,literal(字面值)是指源代码中直接表示某种常量值的标记或符号。字面值是编程语言中的基本构建块之一,它们表示程序中的固定数据。字面值的存在是为了使程序员能够直观地表达数据,而不必依赖于变量或表达式的计算结果。字面值可以分为多种类型,其中包括整数、浮点数、字符串......
  • 《Java编程思想第四版》学习笔记51--关于线程组的控制
    //:ThreadGroup1.java//Howthreadgroupscontrolpriorities//ofthethreadsinsidethem.publicclassThreadGroup1{publicstaticvoidmain(String[]args){//Getthesystemthread&printitsInfo:ThreadGroupsys=Thread.currentThread().......
  • 什么是 Shell,Shell 功能介绍和脚本编程入门实例
    1.概述Shell一种特殊的交互工具,用于用户和Linux系统交互,其功能和构成如下所示:交互工具,为用户提供了启动程序、管理文件系统中的文件和运行在Linux系统上的进程。核心是命令行提示符,命令行提示符是Shell负责交互的部分,允许输入命令,然后解释命令,并在内核中执行。包含了一组内部命......
  • 编程中不初始化变量的垃圾值的危害
    话不多说,直接上代码,为了验证elf的,编了了示例代码study.c1#include<stdio.h>23#defineNUMBER_114#defineNUMBER_2256intmain(intargc,char**argv)7{8inta;9intb;10intc;11a=NUMBER_1;12b=NUMBER_2;13c=a+......
  • 【并发编程】CopyOnWriteArrayList详解与原理
    ......
  • java-多线程编程
    多线程是指在一个程序中同时执行多个线程,每个线程都是独立运行的。Java中的多线程编程允许在同一个程序中同时执行多个任务,以提高程序的效率和响应性。以下是一些与Java多线程编程相关的重要概念:线程(Thread):线程是程序的执行单元,可以并发执行多个任务。在Java中,可以通过创建Thre......
  • Modbus转Profinet,不会编程也能用!轻松快上手!
    Modbus转Profinet,不会编程也能用!轻松快上手!Modbus转Profinet是一种用于工业自动化领域的通信协议转换器,可以将Modbus协议转换为Profinet协议,实现设备之间的数据交换与通信。这个工具的使用非常简单,即使没有编程经验的人也可以轻松上手。即使不会编程的人也可以轻松快速上手使用Mo......
  • java-面向对象编程
    面向对象编程是一种编程范式,它将程序设计组织为对象的集合,这些对象通过相互之间的交互来完成任务。下面是面向对象编程的一些重要概念和Java的相关实现:类(Class)和对象(Object):在Java中,类是定义对象的模板。它描述了对象的属性(成员变量)和行为(方法)。对象是类的实例化结果,可以创建多......