还是要学好数学啊

news2024/9/29 11:28:46

有一个无穷大的二维网格图,一开始所有格子都未染色。给你一个正整数 n ,表示你需要执行以下步骤 n 分钟:

第一分钟,将任一格子染成蓝色。

之后的每一分钟,将与蓝色格子相邻的 所有 未染色格子染成蓝色。

下图分别是 1、2、3 分钟后的网格图。

96a6b5a09f43a7ef9af62d720c5e5b9b.png

请你返回 n 分钟之后 被染色的格子 数目。

题目链接:https://leetcode.cn/problems/count-total-number-of-colored-cells

今天刷到这题,觉得有意思。在纸上画的麻烦,搞个excel涂色,还挺减压的,就像这样:

b8bee81defcf0fd1aad03f1469c41936.png

n=1时,红色1

n=2时,多了橙色,1 + 4 = 5

n=3时,多了绿色,5 + 8 = 13

n=4时,多了紫色,13 + 12 = 25

观察下,规律来了:

n=1时,红色1 = 1  + (1 - 1)* 4  

n=2时,多了橙色,1 + 4 = 5 = 1  + (2 - 1)* 4  

n=3时,多了绿色,5 + 8 = 13 = 5  + (3 - 1)* 4  

n=4时,多了紫色,13 + 12 = 25 = 13  + (4 - 1)* 4

那么公式,就是: 后一个数 = 前一个数 + (n-1)*4  

这让人联想到类似斐波拉契数组的解法,F(n) = F(n-1) + (n-1) * 4

于是代码如下,可见非常低效4ffd048c6d536b97194bd013ba9156ce.png,因为太多重复计算了。

8db6f4651f833153b7ffa6c32477979e.png

既然都知道公式了,可以把公式用作 DP 动态规划转移方程,可以将粗暴递归的重复计算变成线性的 O(n) 规模。

于是代码如下:

6cef17ea9d489bef9e60060a23f4471c.png

有一点点提升bab5bae55c6bbf3821f8d4603cfa33e3.png

发大招,上数学归纳法

e65b0672131b95faf79e636e5fe26ea3.png

这是我家女神帮我算的,我这学渣不懂,说是什么高斯定理,高斯是谁?大家知道吗?89db8d058a451d2418ce3b2e3a7ca5d6.png

(什么?字不好看?风大听不见,你再说一遍?哦哦,没关系,人漂亮啊)

管他呢,现在有了公式,代码就只要一行了,秀的简直不行不行的。08a0e0ace6174ba5d91d8c80d2e25075.png

感受下,击败100%

7d0ca563f536d969305cf1b8aa03a0e5.png

数学好,就是秒杀全场,什么迭代,什么动态规划,都不在话下。

所以,同学们,弟弟妹妹们,还是好好学数学吧。

当然,还有一个 excel 图像法,我不会推公式,我会画图,小学数学老师教的 “加辅助线” ,加辅助线也能推导出用高斯推导出来的那个啥公式,你看看。

e652a03c80453e3ed950ff508c7491e0.png

四条红色的辅助线,把图像分成了四个大红块,加中间一个小红块

中间一个小红块就是1

大红块的规律,看右下角,标了数字,好数。

这是 n = 4 时候的图,长方形的面积等于长乘以宽,4乘以3,然后去掉灰色的恰好是一半,4*3/2,那么得到公式就是(n-1)乘以 n 乘积的一半。

那么最终的公式就是:

F(n) = 4 个大红块面积的一半 + 1 个小红块 

       = 两个大红块面积 + 1个小红块

       = 2 * n  *(n-1) + 1

所以,图形化的学数学,简直太棒了。(这点建议希望数学老师参考下哈,不然学得没有趣味,还会有很多我这样的学渣 8dbda298509597be8cea24e6b0a12338.png15e0d5135574131a72da6f31fa54cbed.png3e7c92a303f86ab5489fd6151f77df7e.png

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

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

相关文章

每日一问-ChapGPT-20230308-关于技术与思考的问题

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230308-关于技术与思考的问题matplotlib_venn 中 venn2函数调用时,subsets传入A list (or a tuple) containing two set objects,怎么理解plt.pie() 包含哪些参数,以及每个参数的意义mat…

云端地球2月更新了这些功能,你都用过了吗?

时光飞逝、转眼已到2023年的第三个月,武汉的天气也逐渐转好,温度步步高升。云端地球产研团队的脚步也越走越快,虽然春节仿佛还是昨天的事,但云端地球已经完成了四次迭代,为广大建模爱好者带来了更多实用功能&#xff0…

BOSHIDA 模块电源的安装与维护

BOSHIDA三河博电科技 模块电源的安装与维护 由于各生产的模块电源的类别、系列、规格品种难以数计,故其功能特性和物理特性不尽相同,因此在安装、使用与维护方面亦各有不同,但应在以下几方面引起注意。 (1)打开包装后…

【Redis】搭建哨兵集群

目录 集群结构 准备实例和配置 启动 测试 集群结构 这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图: 三个sentinel实例信息如下: 节点IPPORTs1192.168.150.10127001s2192.168.150.10127002s3192.168.150.…

10 卷积神经网络及python实现

1 卷积神经网络简介 卷积神经网络(Convolutional Neural Network, CNN)由LeCun在上世纪90年代提出。 LeCun Y., Bottou L., Bengio Y., and Haffner P., Gradient-based learning applied to document recognition, Proceedings of the IEEE, pp. 1-7, 1998. 卷积核和特征图&…

STM32定时器Timer(PWM呼吸灯)

目录 定时器介绍 定时器工作原理: 定时器分类: STM32F103C8T6定时器资源: ​编辑 通用定时器介绍: 定时器计数模式: 定时器时钟源: ​编辑 定时器溢出时间计算公式: 定时器中断实验…

「IT女神勋章」挑战赛#

缓存 本地缓存 本地缓存为了保证线程安全问题,一般使用ConcurrentMap的方式保存在内存之中 分布式缓存。 常见的分布式缓存则有Redis,MongoDB等。 一致性:本地缓存由于数据存储于内存之中,每个实例都有自己的副本&#xff0c…

完全解读低通滤波,并且用其C语言实现

1、什么是低通滤波 低通滤波是一种信号处理技术,它可以用于去除高频信号成分,只保留低频信号成分。低通滤波器的本质是一个线性时不变系统,它可以通过差分方程或者频域响应的形式来描述。 在差分方程的形式下,低通滤波器可以表示…

MySQL数据库引擎(MyIsAm和InnoDB)

一、数据库引擎 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。MySQL5.5版本之后默认InnoDB,之前是MyIsAm。 PS: 设置引擎语句&#xff1…

计算机网络:RIP协议以及距离向量算法

RIP协议 RIP是一种分布式的基于适量向量的路由选择协议,最大优点是简单。要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的唯一最佳(最短)距离记录,最多包含15个路由器,距离为16就表示网络不可达&…

每天一道大厂SQL题【Day15】微众银行真题实战(五)

每天一道大厂SQL题【Day15】微众银行真题实战(五) 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…

DBT 收购 Transform,指标平台已成现代数据栈关键拼图

今年 2 月初,现代数据技术栈独角兽 DBT 宣布完成对 Transform 的并购。在现代数据栈的体系中,DBT 和 Transform 都扮演着重要角色,DBT 侧重于整个分析链路上的数据转换处理,而 Transform 则聚焦在以指标为中心搭建业务分析应用。 …

【java】Java 封装

文章目录Java 封装封装的优点实现Java封装的步骤实例Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防…

14个Python处理Excel的常用操作分享

自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。本文为大家整理了14个Python处理Excel的常用操作,非常好用,希望对大家有所帮助目录自从学了Python后就逼迫用Python来处…

[AI助力] 2023.3.9 考研英语学习 2013 英语二翻译

[AI助力] 2023.3.9 考研英语学习 2013 英语二翻译 文章目录[AI助力] 2023.3.9 考研英语学习 2013 英语二翻译2013 英语二 翻译真题总结Powered with AI用perfect prompt 生成 prompt然后让它们评价,翻译,并改进New Bing 的回答让它改进~ (太惊…

06-CSS

学习目标:能够使用精灵图能够使用字体图标能够写出 CSS 三角能够写出常见的 CSS 用户界面样式能够说出常见的布局技巧1. 精灵图(重点)1.1 为什么需要精灵图一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时&am…

Cloudflare自动检测恶意IP拉黑到防火墙和自动切换5秒盾防CC攻击

资源宝分享:www.httple.net Cloudflare很多朋友都在使用,如果你的网站服务器架设在国外,那Cloudflare是一个非常好的加速工具,一可以为你的网站进行加速,二可以给你的网站提供防护 网站遭遇非常强大的CC和DDoS攻击时&…

安装sqoop

解压 [rootguo147 install]# tar -zxvf sqoop-1.4.7.tar.gz -C ../soft/ 修改名称 [rootguo147 soft]# mv sqoop-1.4.7/ sqoop147 添加jar包 把sqoop-1.4.7.bin__hadoop-2.6.0/lib 下的avro-1.8.1.jar复制到/opt/soft/sqoop147/lib [rootguo147 lib]# pwd /opt/soft/sqoo…

基础05-TCP三次握手和四次挥手

TCP 连接 三次握手 四次挥手 题目 请描述 TCP 连接的 三次握手 和 四次挥手 建立连接 客户端和服务端通过 HTTP 协议发送请求,并获取内容。 在发送请求之前,需要先建立连接,确定目标机器处于可接受请求的状态。 就例如,你要请…

如何做SpringBoot单元测试?

前言单元测试(unit testing),是指对项目中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试,对于Java来说或者是在SpringBoot项目中,最小的可测试单元就是一个方法。做单元测试就是为了证明某段代码的执⾏结果是否符…