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

通过万岁!!!

  • 题目:这个题目比较复杂,就是给你一个坐标轴,然后让你以0,0为中心选择一个边长为整数的正方形,使得正方形中所有点坐标的绝对值之和要大于给定的neededApples。但是我们需要输出的是这个正方形的周长。
  • 基础思路:我们首先把思路定在第一象限,然后坐标轴x的长度8,则得到最后要的周长。我们以x的长度为2进行举例,并且我们只考虑周长上的点,那么我们第一象限需要考虑的点就是(1,2)、(2,2)、(2,1)、(2,0)。需要注意的是(0,2)和(2,0)我们只需要考虑一个就好了。然后我们沿着第一象限正方形的对角线(y=x)对正方形分成两部分,然后只考虑垂直于x轴的这条边,上面的点包括(2,2)、(2,1)、(2,0),我们发现在第一象限中,(2,2)和(2,0)我们只需要计算一次,但是(2,1)这种情况我们需要计算两次。也就是说,在第一象限中,一条边上的点,头尾我们只需要计算一次就好了,但是中间的我们需要计算两次。以垂直于x轴的边来说,正方形的变成为i,则(i,0)和(i,i)我们只需要计算一次,(i,k)则需要计算两次。然后最后将这个结果4,则得到边长为2*i时正方形边上的苹果个数。剩下的就是只需要把上次的加上,然后看一下是不是大于neededApples就好了。上面的代码就得到的第一版,但是这个代码超时了。写完以后就发现,其实可以优化的。
    示意图
  • 优化思路:其实里面的for循环我们可以优化的,(i,k)的点我们需要计算2次,一共由i-1个点。那么针对x坐标来说有i*(i-1)2个苹果,对于y坐标来说,我们有(1+2+…+(i-1))2个苹果,然后再加上首位两个i2+i,然后再4个象限,最终换算出来的结果是12ii。所以while中的代码最终可以优化为i++以后,sum+=12ii。
  • 技巧:数学

java代码——基础思路

class Solution {public long minimumPerimeter(long neededApples) {long i = 1, sum = 12;while (sum < neededApples) {i++;sum += (i + i) * 4;// (i,i)这个点sum += i * 4;// (i,0)这个点for (int k = 1; k < i; k++) {sum += (i + k) * 2 * 4;// 中间的(i,k)的点}}return i * 8;}
}

java代码——优化思路

class Solution {public long minimumPerimeter(long neededApples) {long i = 1, sum = 12;while (sum < neededApples) {i++;sum += 12 * i * i;}return i * 8;}
}
  • 总结:题目不是特别难,但是要发现这里面的规律,画画图其实就出来了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能】清华大学张钹院士:人工智能技术已进入第三代

来源&#xff1a;经济观察报近日&#xff0c;中科院院士、清华大学人工智能研究院院长张钹教授接受记者采访时认为&#xff0c;目前基于深度学习的人工智能在技术上已经触及天花板。从长远来看&#xff0c;必须得走人类智能这条路&#xff0c;最终要发展人机协同&#xff0c;人…

莫侵残日噪,正在异乡听

莫侵残日噪,正在异乡听 闷热的傍晚&#xff0c;出来转转&#xff0c;身体被热流裹着&#xff0c;随手抓拍一张&#xff0c;撤&#xff01; 转载于:https://www.cnblogs.com/xxldannyboy/p/5719460.html

threadlocal get为空_面试常见知识点:ThreadLocal

老套路&#xff0c;先列举下关于ThreadLocal常见的疑问&#xff0c;希望可以通过这篇学习笔记来解决这几个问题&#xff1a;ThreadLocal是用来解决什么问题的&#xff1f;如何使用ThreadLocal&#xff1f;ThreadLocal的实现原理是什么&#xff1f;可否举几个实际项目中使用Thre…

动态资源和静态资源分离

静态资源&#xff1a; 指存储在硬盘内的数据&#xff0c;固定的数据&#xff0c;不需要计算的数据。 如&#xff1a;图片、字体、js文件、css文件等等。在用户访问静态资源时&#xff0c;服务器会直接将这些资源返回到用户的计算机内。 动态资源&#xff1a; 指需要服务器根…

行业观察 | 新一轮AI周期里,华为拿什么破解核心难题?

来源&#xff1a;财经杂志第三方研究机构OpenAI近期发布的研究显示&#xff0c;仅2012年以来&#xff0c;人们对于算力的需求增长六年就超过30万倍&#xff0c;平均每年增长10倍&#xff0c;远超摩尔定律的发展速度。面对AI算力需求的爆发式增长&#xff0c;华为作为AI的后入局…

一致性哈希解决的问题

假设&#xff0c;我们有三台缓存服务器&#xff0c;用于缓存图片&#xff0c;我们为这三台缓存服务器编号为0号、1号、2号&#xff0c;现在&#xff0c;有3万张图片需要缓存&#xff0c;我们希望这些图片缓存到这3台服务器上&#xff0c;以便它们能够分摊缓存的压力。做法是对缓…

swot分析法案例_(附数据集)SWOT分析实战案例!

最近一直在为一件事苦恼&#xff0c;开在市中心的那家西点店的生意越做越好&#xff0c;分店也开了两家&#xff0c;但挣得这点钱还是不够买房子。这不&#xff0c;最近看上了这如火如荼的奶茶市场&#xff0c;想借现有资源开一家奶茶店&#xff0c;但不知道这个想法靠不靠谱&a…

人工智能、核聚变、碳捕捉……最有可能帮助拯救地球的10项技术

来源&#xff1a; 资本实验室亚马逊森林大火、加速消逝的北极冰面、有记录以来最热的7月、越来越多的极端天气事件……各种因素正在让地球、让我们的生存环境经受日趋严重的考验。大问题往往意味着大机会。在人类对环境制造麻烦的过程中&#xff0c;势必又不断催生出各种新技术…

点击按钮弹出iframe_WEB安全(四) :CSRF与点击劫持

跨站点请求伪造CSRF是跨站点请求伪造&#xff0c;它的请求有两个关键点&#xff0c;跨站点的请求与请求是伪造的&#xff0c;从字面上看&#xff0c;跨站点的请求来源应该是其他站点&#xff0c;比如&#xff0c;目标网站接收到来源网站的恶意操作&#xff0c;但是&#xff0c;…

mysql查询前100行和后100行

查询前100行 SELECT * FROM table LIMIT 100; 查询后100行 select * from table order by id desc limit 100&#xff1b; 查询第6-15行 SELECT * FROM table LIMIT 5,10;

input框自动填充内容背景颜色为黄色解决方法

input:-webkit-autofill { box-shadow: 0 0 0px 1000px white inset !important;} 或者关闭自动填充 <form action"loginAction" method"post" autocomplete"off">转载于:https://www.cnblogs.com/yuan-ye/p/5729108.html

两种超级智能,哪一个对人类未来影响更为深远?

来源&#xff1a;刘锋科学网博客前言&#xff1a;无论在学术界还是产业界&#xff0c;超级智能并没有被纳入正式的体系概念中&#xff0c;因此超级智能究竟是什么&#xff0c;也没有统一的的定义&#xff0c;事实上在过去的时间里&#xff0c;出现了两种不同的超级智能概念&…

Java9都快发布了,Java8的十大新特性你了解多少呢?

Java 9预计将于今年9月份发布&#xff0c;这是否会是一次里程碑式的版本&#xff0c;我们拭目以待。今天&#xff0c;我们先来复习一下2014年发布的Java 8的十大新特性。 Java 8可谓是自Java 5以来最具革命性的版本了&#xff0c;她在语言、编译器、类库、开发工具以及Java虚拟…

struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限

使用 Authing 可以轻松接入许多社会化登录&#xff0c;同时无需翻看社会化登录提供方的繁琐接入文档&#xff0c;让开发者更加专注业务从而提升开发效率。这看起来很方便&#xff0c;But&#xff0c;通过 Authing 登录的社会化登录用户&#xff0c;无法获取更高级的权限&#x…

再不用担心DataRow类型转换和空值了(使用扩展方法解决高频问题)

在使用DataRow读取数据时&#xff0c;通常会遇到数据可能为Null, 但是又需要转换为如int等其它类型的数据&#xff0c;因此就通常会写这样的代码&#xff1a; if (dr[name] ! DBNull.Value && dr[name] ! null){ if (!int.TryParse(dr[name].ToString(), out result…

PHP单引号和双引号的区别

$foo 2; echo "foo is $foo"; // 打印结果: foo is 2 echo foo is $foo; // 打印结果: foo is $foo echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) echo foo is $foo\n; // 打印结果: foo is $foo\n

美国科技界高度关注中国科技创新进展

来源&#xff1a;新华网近日&#xff0c;美国《福布斯》双周刊网站刊文说&#xff0c;中国互联网和高科技企业已超越模仿时代&#xff0c;成为投资和研发的全球领先者&#xff0c;中国的科技巨头进入了全新的创新时代。记者在采访中发现&#xff0c;美国科技界高度关注中国科技…

补鞋匠---Cobbler 服务器自动搭建

Cobbler 服务器自动搭建http://tshare365.com/archives/439.html转载于:https://www.cnblogs.com/iiiiher/p/5744631.html

科技创新2030—“新一代人工智能”重大项目拟立项的2018年度项目公示清单

来源&#xff1a;财政资金申请根据《国务院关于改进加强中央财政科研项目和资金管理的若干意见》&#xff08;国发[2014]11号&#xff09;、《国务院关于深化中央财政科技计划&#xff08;专项、基金等&#xff09;管理改革方案的通知》&#xff08;国发[2014]64号&#xff09;…

POSIX多线程API函数

创建 int pthread_create(pthread_t* tidp,const pthread_attr_t* attr,void* (*start_rtn)(void*), void* arg ) tidp:事先创建好的pthread_t类型的参数。成功时tidp指向的内存单元被设置为新创建线程的线程ID。 attr:定义新线程的一些属性&#xff08;配置项&#xff09;&…