LeetCode 2481. Minimum Cuts to Divide a Circle【数学,几何】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

圆内一个 有效切割 ,符合以下二者之一:

  • 该切割是两个端点在圆上的线段,且该线段经过圆心。
  • 该切割是一端在圆心另一端在圆上的线段。

一些有效和无效的切割如下图所示。
LeetCode 2481. Minimum Cuts to Divide a Circle【数学,几何】简单_第1张图片
给你一个整数 n ,请你返回将圆切割成相等的 n 等分的 最少 切割次数。

示例 1:
LeetCode 2481. Minimum Cuts to Divide a Circle【数学,几何】简单_第2张图片

输入:n = 4
输出:2
解释:
上图展示了切割圆 2 次,得到四等分。

示例 2:
LeetCode 2481. Minimum Cuts to Divide a Circle【数学,几何】简单_第3张图片

输入:n = 3
输出:3
解释:
最少需要切割 3 次,将圆切成三等分。
少于 3 次切割无法将圆切成大小相等面积相同的 3 等分。
同时可以观察到,第一次切割无法将圆切割开。

提示:

  • 1 <= n <= 100

解法 对称性

根据对称性:

  • n n n 为偶数时,每一块扇形都有对称的扇形,所以是切割 n 2 \dfrac{n}{2} 2n 次;
  • n n n 为奇数时,不存在对称性,所以是切割 n n n 次。

注意 n = 1 n=1 n=1 时无需切割。

class Solution {
    public int numberOfCuts(int n) {
        if (n == 1) return 0;
        return (n % 2 == 0) ? n / 2 : n;
    }
}

复杂度分析:

  • 时间复杂度: O ( 1 ) O(1) O(1)
  • 空间复杂度: O ( 1 ) O(1) O(1) ,仅用到若干变量。

你可能感兴趣的:(数学,leetcode,算法,职场和发展)