当前位置: 首页 > article >正文

LeetCode题练习与总结:Fizz Buzz--412

一、题目描述

给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer下标从 1 开始)返回结果,其中:

  • answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
  • answer[i] == "Fizz" 如果 i 是 3 的倍数。
  • answer[i] == "Buzz" 如果 i 是 5 的倍数。
  • answer[i] == i (以字符串形式)如果上述条件全不满足。

示例 1:

输入:n = 3
输出:["1","2","Fizz"]

示例 2:

输入:n = 5
输出:["1","2","Fizz","4","Buzz"]

示例 3:

输入:n = 15
输出:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

提示:

  • 1 <= n <= 10^4

二、解题思路

  1. 创建一个列表来存储结果。
  2. 遍历从1到n的每个整数。
  3. 对于每个整数,检查它是否同时是3和5的倍数,如果是,则将"FizzBuzz"添加到列表中。
  4. 如果不是,检查它是否是3的倍数,如果是,则将"Fizz"添加到列表中。
  5. 如果不是,检查它是否是5的倍数,如果是,则将"Buzz"添加到列表中。
  6. 如果以上条件都不满足,则将整数转换为字符串并添加到列表中。
  7. 最后返回列表。

三、具体代码

import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<String> fizzBuzz(int n) {
        List<String> answer = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            if (i % 3 == 0 && i % 5 == 0) {
                answer.add("FizzBuzz");
            } else if (i % 3 == 0) {
                answer.add("Fizz");
            } else if (i % 5 == 0) {
                answer.add("Buzz");
            } else {
                answer.add(String.valueOf(i));
            }
        }
        return answer;
    }
}

这段代码定义了一个名为Solution的类和一个名为fizzBuzz的方法,该方法接收一个整数n并返回一个字符串列表,其中包含了从1到n的每个整数的Fizz Buzz表示。

四、时间复杂度和空间复杂度

1. 时间复杂度
  • 我们有一个从1到n的循环,这个循环会执行n次。
  • 在循环内部,我们进行了一系列的判断操作,这些操作都是常数时间操作(O(1))。
  • 因此,总的时间复杂度是循环次数乘以每次循环的操作数,即O(n)。
2. 空间复杂度
  • 我们创建了一个列表answer来存储结果,这个列表的大小与输入n成正比。
  • 在最坏的情况下,即n最大时,列表answer将包含n个元素。
  • 因此,空间复杂度是O(n),因为我们使用了与输入大小成线性关系的额外空间。

五、总结知识点

  • 类定义

    • class 关键字用于定义一个类。
    • Solution 是类的名称。
  • 方法定义

    • public 关键字表示方法的访问修饰符,表示该方法可以被任何其他类访问。
    • List<String> 表示该方法返回一个字符串列表。
    • fizzBuzz 是方法的名称。
    • int n 表示方法接收一个整数类型的参数 n
  • 集合框架

    • List 接口用于表示一个有序集合,可以包含重复的元素。
    • ArrayList 类实现了 List 接口,提供了可调整大小的数组实现。
  • 创建对象

    • new ArrayList<>() 用于创建一个 ArrayList 对象的实例。
  • 循环结构

    • for 循环用于重复执行一段代码块指定的次数。
  • 条件判断

    • ifelse if, 和 else 关键字用于基于条件执行不同的代码块。
    • % 是取模运算符,用于判断一个数是否能被另一个数整除。
  • 字符串操作

    • String.valueOf(i) 是一个静态方法,用于将基本数据类型转换为字符串。
  • 列表操作

    • add 方法用于向列表中添加元素。
  • 返回值

    • return 关键字用于从方法中返回一个值。
  • 整型变量

    • int 是 Java 中的基本数据类型,用于表示整数。

以上就是解决这个问题的详细步骤,希望能够为各位提供启发和帮助。


http://www.kler.cn/a/404215.html

相关文章:

  • ant-design-vue中table组件多列排序
  • 「Mac玩转仓颉内测版26」基础篇6 - 字符类型详解
  • 利用 TensorFlow Profiler:在 AMD GPU 上优化 TensorFlow 模型
  • WPF里面的C1FlexGrid表格控件添加RadioButton单选
  • 【jvm】为什么要用元空间替代永久代
  • 软件测试—— Selenium 常用函数(一)
  • 深度解析神经网络中的最大池化层:工作原理、参数配置与应用示例
  • 「Java EE开发指南」如何使用Visual JSF编辑器设计JSP?(一)
  • 【vue】vue中.sync修饰符如何使用--详细代码对比
  • 【Word】一键批量引用论文上标——将正文字体改为上标格式
  • Flink升级程序和版本
  • word-毕业论文的每一章节的页眉单独设置为该章的题目怎么设置
  • Houdini和Blender如何使用CPU云渲染
  • 深度学习之One Stage目标检测算法2
  • 深入解析Python中的逻辑回归:从入门到精通
  • 哋它亢SEO技术分析:如何提升网站在搜索引擎中的可见性
  • 自然语言处理:第六十二章 KAG 超越GraphRAG的图谱框架
  • 【三合黑马指标】指标操盘技术图文教程,三线粘合抓黑马,短线买点持股辅助,通达信炒股软件指标
  • Linux13 传输层UDP和TCP协议
  • 微知-plantuml常用语法和要点以及模板?(note over、create、box,endbox、alt,else,end, autonumber)
  • qt 之 QDockWidget设置不可拖动
  • 【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
  • PIXHAWK(ardupilot4.52)单ic通道输出pwm
  • [QDS]从零开始,写第一个Qt Design Studio到程序调用的项目
  • ChatGPT Search VS Kimi探索版:AI搜索哪家强?!
  • 阶乘之和的尾数