返回介绍

solution / 2500-2599 / 2579.Count Total Number of Colored Cells / README

发布于 2024-06-17 01:03:04 字数 2249 浏览 0 评论 0 收藏 0

2579. 统计染色格子数

English Version

题目描述

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

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

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

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

 

示例 1:

输入:n = 1
输出:1
解释:1 分钟后,只有 1 个蓝色的格子,所以返回 1 。

示例 2:

输入:n = 2
输出:5
解释:2 分钟后,有 4 个在边缘的蓝色格子和 1 个在中间的蓝色格子,所以返回 5 。

 

提示:

  • 1 <= n <= 105

解法

方法一:数学

我们观察发现,第 $n$ 分钟后,网格中共有 $2 \times n - 1$ 列,每一列上的数字分别为 $1, 3, 5, \cdots, 2 \times n - 1, 2 \times n - 3, \cdots, 3, 1$。左右两部分均为等差数列,求和可以得到答案 $2 \times n \times (n - 1) + 1$。

时间复杂度 $O(1)$,空间复杂度 $O(1)$。

class Solution:
  def coloredCells(self, n: int) -> int:
    return 2 * n * (n - 1) + 1
class Solution {
  public long coloredCells(int n) {
    return 2L * n * (n - 1) + 1;
  }
}
class Solution {
public:
  long long coloredCells(int n) {
    return 2LL * n * (n - 1) + 1;
  }
};
func coloredCells(n int) int64 {
  return int64(2*n*(n-1) + 1)
}
function coloredCells(n: number): number {
  return 2 * n * (n - 1) + 1;
}
impl Solution {
  pub fn colored_cells(n: i32) -> i64 {
    2 * (n as i64) * ((n as i64) - 1) + 1
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文