LeetCode编写一个可以从 1 到 n 输出代表这个数字的字符串的程序

(多线程)1195. 交替打印字符串 编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是: 如果这个数字可以被 3 整除,输出 "fizz"。 如果这个数字可以被 5 整除,输出"buzz"。 如果这个数字可以同时被 3 和 5 整除,输出 "fizzbuzz"。 例如,当n = 15,输出:1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14... 阅读详情

题目

编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是:

如果这个数字可以被 3 整除,输出 "fizz"。
如果这个数字可以被 5 整除,输出 "buzz"。
如果这个数字可以同时被 3 和 5 整除,输出 "fizzbuzz"。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fizz-buzz-multithreaded
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
//
// Created by SwordArtOnline on 2020/9/20.
//

#ifndef T0916_3_FIZZBUZZ_H
#define T0916_3_FIZZBUZZ_H
#include <mutex>
#include <condition_variable>
using std::mutex;
using std::condition_variable;
#include <functional>
using std::function;
using std::unique_lock;
class FizzBuzz {
private:
    int n;
    mutex mut;
    condition_variable cv;
    int num;
public:
    FizzBuzz(int n){
        this->n=n;
        num=1;
    }
    void fizz(function<void()>printFizz ){
        for(;num<=n;){
            unique_lock<mutex> lck(mut);
            cv.wait(lck,[this]{return (num%3==0)&&(num%5!=0);});
            printFizz();
            num++;
            cv.notify_all();
        }
    }
    void buzz(function<void()>printBuzz){
        for(;num<=n;){
            unique_lock<mutex>lck(mut);
            cv.wait(lck,[this]{return (num%3!=0)&&(num%5==0);});
            printBuzz();
            num++;
            cv.notify_all();
        }
    }
    void fizzbuzz(function<void()> printFizzBuzz){
        for(;num<=n;){
            unique_lock<mutex>lck(mut);
            cv.wait(lck,[this]{return (num%3==0)&&(num%5==0);});
            num++;
            cv.notify_all();
        }
    }
    void number(function<void(int)>printNumber){
        for(;num<=n;){
            unique_lock<mutex>lck(mut);
            cv.wait(lck,[this]{return (num %3!=0)&&(num%5!=0);});
            printNumber(num);
            num++;
            cv.notify_all();
        }
    }

};


#endif //T0916_3_FIZZBUZZ_H

copy以下作者,补充引用库

在这里插入图片描述

LeetCode 第N个数字(图解) 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。 注意: n 是正数且在32为整形范围内 ( n < 231)。 示例 1: 输入: 3 输出: 3 示例 2: 输入: 11 输出: 0 说明: 第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是0,它是10的一部分。 思路分析... 阅读详情

相关推荐

LeetCode 神奇字符串

神奇的字符串 S 只包含 ‘1’ 和 ‘2’,并遵守以下规则: 字符串 S 是神奇的,因为串联字符 ‘1’ 和 ‘2’ 的连续出现次数会生成字符串 S 本身。 字符串 S 的前几个元素如下:S = “1221121221221121122 ......” 如果我们将 S 中连续的 1 和 2 进行分组,它将变成: 1 22 11 2 1 22 1 22 11 2 11 22 ...... 并且每个...

hestyle的博客 2203

LeetCode-1195.交替打印字符串(多线程)

LeetCode 题目描述 编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是: 如果这个数字可以被 3 整除,输出 “fizz”。 如果这个数字可以被 5 整除,输出 “buzz”。 如果这个数字可以同时被 3 和 5 整除,输出 “fizzbuzz”。 例如,当 n = 15,输出: 1, 2, fizz, 4, buzz, fizz, 7, 8...

2.wa 1246

LeetCode 最大为N的数字组合

我们有一组排序的数字 D,它是 {‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’} 的非空子集。(请注意,‘0’ 不包括在内。) 现在,我们用这些数字进行组合写数字,想用多少次就用多少次。例如 D = {‘1’,‘3’,‘5’},我们可以写出像 ‘13’, ‘551’, ‘1351315’ 这样的数字。 返回可以用 D 中的数字写出的小于或等于 N 的正整数的数目。 示例...

hestyle的博客 1329

LeetCode 412. Fizz Buzz

写一个程序,输出从 1 到 n 数字的字符串表示。 如果 n 是3的倍数,输出“Fizz”; 如果 n 是5的倍数,输出“Buzz”; 3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。 示例: n = 15, 返回: [ “1”, “2”, “Fizz”, “4”, “Buzz”, “Fizz”, ...

hpuhjl的专栏 1852

长鑫存储面试真题解析:DRAM工程师的工程直觉与产线思维

DRAM作为现代计算系统的底层存储基石,其性能与可靠性高度依赖半导体物理基础、工艺窗口控制和电路-系统协同设计。理解电荷保持机制、位线电容耦合效应、信号完整性约束等核心原理,是突破传统数字IC思维、构建真实产线语感的关键。在晶圆厂级工程实践中,TEM缺陷识别、BIST空间聚类分析、Retention失效定位等能力,直接关联良率爬坡与客户系统稳定性。本文聚焦长鑫存储一线技术面试中高频出现的工艺-电路-测试三维问题,融合‘电荷保持’‘信号完整性’等热词,还原DRAM工程师必备的系统性建模能力与闭环验证思维,覆盖

weixin_34293246的博客 335

Windows 10/11一键搞定HDF5文件查看:HDFView 3.4.1免配置安装指南(附中文路径避坑技巧)

本文详细介绍了HDFView 3.4.1在Windows 10/11上的免配置安装方法及中文路径优化技巧。作为HDF5文件查看的专业工具,HDFView 3.4.1简化了安装流程,提升了科研数据处理效率,特别适合遥感、气象等领域的研究人员使用。

qsc9012345的博客 1143

leetcode1195. 交替打印字符串(java实现)

题目 原题连接leetcode1195 题目描述: 编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是: 如果这个数字可以被 3 整除,输出 “fizz”。 如果这个数字可以被 5 整除,输出 “buzz”。 如果这个数字可以同时被 3 和 5 整除,输出 “fizzbuzz”。 例如,当 n = 15,输出: 1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14, fizzbuzz。 假设有这么一个类: class F

三少说 512

STM32CubeIDE开发环境搭建与GPIO控制实战

嵌入式开发中,MCU开发环境构建是软硬件协同的起点,其核心在于工具链选型、外设抽象层级与调试可靠性。HAL库作为ST官方标准硬件抽象层,通过统一接口屏蔽芯片差异,显著提升工程可移植性;而STM32CubeIDE则以图形化配置+自动生成代码的方式,实现‘配置即代码’的确定性开发范式。该组合在教学验证、原型迭代和中小规模量产中具备高性价比技术价值,广泛应用于智能传感、工业HMI及IoT终端等场景。本文聚焦STM32CubeIDE 1.15.0环境部署、MyST账户与固件包管理、ST-LINK驱动校验,以及基于H

weixin_33531560的博客 79

LeetCode 1195. 交替打印字符串 (互斥量、条件量)

题目描述 编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是: 如果这个数字可以被 3 整除,输出 "fizz"。 如果这个数字可以被 5 整除,输出"buzz"。 如果这个数字可以同时被 3 和 5 整除,输出 "fizzbuzz"。 例如,当n = 15,输出:1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14, fizzbuzz。 假设有这么一个类: class FizzBuzz { public ...

卑鄙的我 601

【华为OD机试真题 2025B卷】662、静态扫描 | 机试真题+思路参考+代码解析(C++、Java、Py)(B卷复用)

【华为OD机试真题 2025B卷】662、静态扫描 | 机试真题+思路参考+代码解析(C++、Java、Py)(B卷复用) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od

KJ.JK 5396

31、摩擦学中的材料选择

本博文深入探讨了摩擦学应用中材料选择的重要性,分析了材料的机械、物理和化学属性对摩擦学性能的影响。同时介绍了材料匹配原则、处理方法及表面涂层技术,以优化耐磨性和抗腐蚀性。通过实际案例和评估方法,为读者提供了系统化的材料选择流程和决策依据。

juice的博客 245

Leetcode 1195:交替打印字符串

题目描述 编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是: 如果这个数字可以被 3 整除,输出 "fizz"。 如果这个数字可以被 5 整除,输出"buzz"。 如果这个数字可以同时被 3 和 5 整除,输出 "fizzbuzz"。 例如,当n = 15,输出:1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, ...

weixin_35338624的博客 631

SSD |(二)SSD主控

控制器作为一个片上系统,处理来自用户端的命令并负责管理闪存颗粒。

知识库搭建ing 1955

LeetCode 412 Fizz-Buzz

写一个程序,输出从 1 到n数字的字符串表示。 1. 如果n是3的倍数,输出“Fizz”; 2. 如果n是5的倍数,输出“Buzz”; 3.如果n同时是3和5的倍数,输出 “FizzBuzz”。 示例: n = 15, 返回: [ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7...

eswang的优快云博客 389

Android-Zygote进程的诞生—从init到Zygote启动

Android Zygote进程启动流程解析 Android系统的Zygote进程是所有应用进程的父进程,由init进程创建。启动流程分为: 内核阶段:加载init进程(PID=1) init进程阶段: 挂载基础文件系统(tmpfs、proc等) 设置SELinux安全策略 解析init.rc配置文件 Zygote启动:init进程通过app_process启动Zygote,预加载系统资源 SystemServer:Zygote fork出系统服务进程 关键点: init是用户空间第一个进程......

保持专注,保持热爱 636

【git】win 10 / win 11:git 首次拉取云效平台代码详细教程

git 首次拉取云效平台代码详细教程:Git 生成 SSH 公钥、云效工作台添加 SSH 公钥、git 使用 SSH / HTTP 链接拉取云效代码

顾三殇 —— 博客空间(软件测试) 4215

python从1到n的某个数的倍数只和_Leetcode练习(Python):第412题:Fizz Buzz:写一个程序,输出从 1 到 n 数字的字符串表示。 1. 如果 n 是3的倍数,输出“F...

题目:Fizz Buzz:写一个程序,输出从 1 到 n 数字的字符串表示。 1. 如果 n 是3的倍数,输出“Fizz”; 2. 如果 n 是5的倍数,输出“Buzz”; 3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz...

weixin_39850699的博客 303

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

力扣400:第N位数字

题目要求在无限整数序列中找出第n位数字。解题思路分为两步:首先确定数字的位数d,通过减去不同位数的位数和来定位;然后计算具体数字及其第几位。代码实现时,先循环确定位数d,再计算目标数字在d位数中的位置,最后提取对应位上的数字。例如,对于n=11,返回0("12345678910"的第11位)。该方法通过数学计算高效定位所需数字。

weixin_74285822的博客 840

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【中等】力扣算法题解析LeetCode400:第 N 位数字

LeetCode 400题要求在无限整数序列123456789101112...中找到第n位数字。核心解法分三步:1)通过循环减去各组位数(1位9数,2位180位等)确定n所在数字的位数k;2)计算目标数字num = 10^(k-1) + (n-1)/k;3)取数字的第(n-1)%k位。Java实现利用digit、start、count变量高效定位,时间复杂度O(log₁₀n)。例如,n=10返回'1'(来自数字10的首位)。该算法避免遍历,适用于n≤2³¹-1的大数场景。关键词: 位数分组、数学定位、

ylumwd的博客 1578

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

剑指 Offer 17. 打印从1到最大的n位数- 力扣(LeetCode)

剑指 Offer 17. 打印从1到最大的n位数- 力扣(LeetCode)

Onwaier的博客 600

LeetCode——子串能表示从 1 到 N 数字的二进制串

是字符串中连续的字符序列。给定一个二进制字符串。

冷兮雪的博客 826

【PythonCode】力扣Leetcode6~10题Python版

Leetcode6-10

weixin_43790276的博客 1859

力扣400. 第 N 位数字

第一百零八天 --- 力扣400. 第 N 位数字题目一思路代码 题目一 力扣:400. 第 N 位数字 思路 1、首先就要读懂题意,这样理解,就相当于吧从1到2^31-1所有数放在一个超长的字符串中,n就相当于读取这个字符串第n位是哪个数字,也就是说答案只可能是0到9中的一个。 2、总体计算思路: <1> 通过n的范围先计算出n对应的是个几位数。 <2> 对n重整,减去之前那些位数占用的序号数。 <3> n/(位数) 得到该数在自己这个大范围内排名 <4&gt

qq_45678698的博客 855

力扣 1016. 子串能表示从 1 到 N 数字的二进制串

1016. 子串能表示从 1 到 N 数字的二进制串 难度中等19收藏分享切换为英文关注反馈 给定一个二进制字符串S(一个仅由若干'0' 和 '1' 构成的字符串)和一个正整数N,如果对于从1到N的每个整数X,其二进制表示都是S的子串,就返回true,否则返回false。 示例 1: 输入:S = "0110", N = 3 输出:true 示例 2: 输入:S = "0110", N = 4 输出:false 提示: 1 <= S.leng...

qq_41723573的博客 281
上一篇: RGB讲解
下一篇: cargo run 报error: linker `cc` not found,rust编程gcc : 依赖: gcc-7 (>= 7.3.0-12~) 但是它将不会被安装 无法修正错误,因为您要求某
BigData-0
博客等级 码龄7年 341粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值