Leetcode3211. 生成不含相邻零的二进制字符串

news2024/11/13 16:02:18

Every day a Leetcode

题目来源:3211. 生成不含相邻零的二进制字符串

解法1:回溯

可以使用回溯得到所有长度为 n 的有效字符串。

字符串的每个位置都需要填入 0 或 1。对于 0≤i<n,如果 i=0 或字符串的下标 i−1 处填入 1,则字符串的下标 i 处可以填入 0 或 1,否则字符串的下标 i 处只能填入 1。

上述操作可以确保得到有效字符串,当得到一个长度为 n 的有效字符串时,将该字符串添加到结果列表中。回溯结束之后即可得到所有长度为 n 的有效字符串。

代码:

/*
 * @lc app=leetcode.cn id=3211 lang=cpp
 *
 * [3211] 生成不含相邻零的二进制字符串
 */

// @lc code=start
class Solution
{
private:
    bool check(string &s)
    {
        int n = s.size();
        for (int i = 0; i < n - 1; i++)
            if (s[i] == '0' && s[i + 1] == '0')
                return false;
        return true;
    }

public:
    vector<string> validStrings(int n)
    {
        vector<string> ans;
        string cur = "";
        backtrack(cur, 0, n, ans);
        return ans;
    }
    // 辅函数- 回溯
    void backtrack(string &cur, int level, int n, vector<string> &ans)
    {
        if (level > n)
            return;
        if (level == n && check(cur))
        {
            ans.push_back(cur);
            return;
        }
        
        cur.push_back('0');
        level++;
        backtrack(cur, level, n, ans);
        level--;
        cur.pop_back();

        cur.push_back('1');
        level++;
        backtrack(cur, level, n, ans);
        level--;
        cur.pop_back();
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n*2n),其中 n 是给定的有效字符串长度。有效字符串个数不超过 2n,每个有效字符串添加到答案中的时间是 O(n),因此时间复杂度是 O(n*2n)。

空间复杂度:O(n),其中 n 是给定的有效字符串长度。存储当前有效字符串的临时空间和递归调用栈空间是 O(n)。注意返回值不计入空间复杂度。

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

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

相关文章

python一维表转二维表

一维表转二维表 import pandas as pd # 读取数据 product_df pd.read_csv(rD:\excelFile\practice\物品属性值一维表.csv,encodingutf-8) # print(product_df)# 将一维表转变二维 s pd.Series(list(product_df[属性值]),index[product_df[物品编号],product_df[属性名]]) …

Langchain[6]-LangGraph:异步和流、图可视化、多智能体协作、LCEL代码生成

Langchain[6]-LangGraph:异步和流、图可视化、多智能体协作、LCEL代码生成 1.异步和流 因为任何大模型在推理的时候,都会有一定的时间延迟,这是由大模型的底层架构决定的,所以在很多应用,尤其是对话应用中,使用异步以及流式输出,是大幅提升用户体验的较好方法。 在langG…

产品经理-​统计数据是如何产生的(20)

在互联网当中,监测一个项目的实际情况,在产品当中,往往需要进行数据的监测,看用户的习惯,进而进行对产品进行优化,比如统计产品用户的一些行为,鼠标点击,鼠标hover,停留时长,进入,进出等 产品经理看到的数据统计一般是经历了下面几个阶段 数据埋点&#xff1a;这个阶段产品经理…

Leetcode215. 数组中的第K个最大元素

我们也可以使用堆排序来解决这个问题——建立一个小根堆&#xff0c; 遍历数组将元素入堆&#xff1b;如果当前堆内元素超过 k 了&#xff0c;我们就把堆顶元素去除&#xff0c;即去除当前的最小值。因此我们在元素入堆的过程中&#xff0c;不断淘汰最小值&#xff0c;最终留在…

《从C/C++到Java入门指南》- 7.浮点数运算

浮点数运算 引言 浮点数在计算机中难以进行精确表示&#xff0c;例如&#xff1a;0.1 换算成二进制是一个无限循环的小数&#xff0c;无论是double 还是float&#xff0c;都只能存储一个近似的值。但是0.5却可以进行精确的表示。 误差 浮点数的运算时常伴有误差&#xff1a…

RHCE(免密登录+web服务器)之小试牛刀

1、配置linux客户端免密登录服务端linux主机的root用户 2、配置web服务器&#xff0c;当访问网站www.haha.com时显示&#xff1a;haha 3、配置web服务器&#xff0c;当访问网站www.xixi.com/secret/显示&#xff1a;this is secret 本实验使用RHEL9.3和Rocky linux8操作系统 RH…

AI赋能下的人体摔倒识别技术:深度解析与应用前景

引言 随着人工智能技术的快速发展&#xff0c;AI赋能的解决方案在各行各业中展现出巨大的潜力。特别是在安全监控和健康护理领域&#xff0c;AI技术的应用不仅提高了效率&#xff0c;还极大地提升了安全性。本文将深入探讨思通数科&#xff08;南京&#xff09;信息技术有限公…

ipv6 基础学习(一)

IPv6 为什么要有IPV6&#xff1f; IPv4地址空间有限&#xff1a;IPv4使用32位地址&#xff0c;最多可提供约43亿个地址。随着互联网设备数量的爆炸式增长&#xff0c;这些地址已经几乎耗尽。 IPv6地址空间庞大&#xff1a;IPv6使用128位地址&#xff0c;可以提供大约3.410^3…

人工智能与机器学习原理精解【2】

文章目录 机器学习基础一般化流程回归线性回归一元线性回归基础斜率的公式克莱姆法则&#xff08;Cramers Rule&#xff09;一、克莱姆法则的基本内容二、克莱姆法则的适用条件三、克莱姆法则的优缺点四、总结 导数与极值的问题 julia实现 最小二乘法原理最小二乘法的原理线性回…

视觉巡线小车——STM32+OpenMV

系列文章目录 第一章&#xff1a;视觉巡线小车——STM32OpenMV&#xff08;一&#xff09; 第二章&#xff1a;视觉巡线小车——STM32OpenMV&#xff08;二&#xff09; 第三章&#xff1a;视觉巡线小车——STM32OpenMV&#xff08;三&#xff09; 第四章&#xff1a;视觉巡…

前端打印如何给打印页加上水印

插件使用相关&#xff1a;vue-print-nb 前端打印的一个实现方案-CSDN博客 示例代码&#xff1a; media print {page {size: auto; //页面大小自动&#xff0c;防止打印版不全margin: 15mm; //页面边距的设定}body{background-image: url(/assets/images/login/logo.png);back…

java高级——Collection集合之Set探索(底层为HashMap实现)

java高级——Collection集合之Set探索 前情提要文章介绍继承结构底层代码&#xff08;一张图你就悟了&#xff09;下期预告 前情提要 上一篇文章我们探索了HashMap&#xff0c;详细解说了哈希冲突&#xff0c;红黑树以及Map底层到底是怎么实现的&#xff0c;这一篇我们简单说一…

三字棋游戏(C语言详细解释)

hello&#xff0c;小伙伴们大家好&#xff0c;算是失踪人口回归了哈&#xff0c;主要原因是期末考试完学校组织实训&#xff0c;做了俄罗斯方块&#xff0c;后续也会更新&#xff0c;不过今天先从简单的三字棋说起 话不多说&#xff0c;开始今天的内容 一、大体思路 我们都知…

开源模型应用落地-FastAPI-助力模型交互-进阶篇-RequestDataclasses(三)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理&#xff0c;使应用程序能够处理各种不同的请求场景&#xff0c;提高应用程序的灵活性和可扩展性。 在数据验证和转换方面&#xff0c;高级用法提供了更精细和准确的控制&#…

Springcloud之gateway的使用详解

官网地址&#xff1a;https://docs.spring.io/spring-cloud-gateway/docs/4.0.4/reference/html/ 1.网关入门 helloword 网关不依赖start-web 导入的pom&#xff1a; <!--gateway--> <dependency><groupIdorg.springframework.cloud</groupId><arti…

CKS-Kubernetes-证书题库总结

证书如下 个人考试总结 第一次考试 成绩如下&#xff0c;其实这一次我题目全做了&#xff0c;个人感觉也没有什么错误&#xff0c;但是环境做错了 7月14日CKS考试笔记 问题分析 你这次考试得了57%。 至少需要67%的分数才能通过。 对您完成的考试的自动分析显示了三个得分最…

【深度学习】起源:人脑的神经结构

文章目录 睁眼看世界&#xff0c;倾耳听人间脑子&#xff0c;是个好东西&#xff01;眼睛成像其它身体感触系统脑子&#xff1a;我很忙的&#xff01;脑细胞&#xff1a;脑子里的打工人生物神经元——结构生物神经元——人脑的运算单位 人脑的深度学习总结 睁眼看世界&#xff…

数据结构 —— B树

数据结构 —— B树 B树B树的插入操作分裂孩子分裂父亲分裂 我们之前学过了各种各样的树&#xff0c;二叉树&#xff0c;搜索二叉树&#xff0c;平衡二叉树&#xff0c;红黑树等等等等&#xff0c;其中平衡二叉树和红黑树都是控制树的高度来控制查找次数。 但是&#xff0c;这都…

李彦宏论AI:技术革新与产业价值的双重驱动

文章目录 每日一句正能量前言AI技术应用场景探索1. **医疗健康**2. **自动驾驶**3. **工业制造**4. **金融服务**5. **教育**6. **农业**7. **环境监测**8. **安全监控**9. **零售业**10. **艺术与娱乐** 避免超级应用陷阱的策略1. **明确应用目标**2. **优化用户体验**3. **注…

NFT革命:数字资产的确权、营销与元宇宙的未来

目录 1、NFT&#xff1a;数字社会的数据确权制度 2、基于低成本及永久产权的文化发现 3、PFP&#xff1a;从“小图片”到“身份表达”&#xff0c;再到社区筛选 4、透明表达&#xff1a;NFT 在数字化营销中的商业价值 5、可编程性&#xff1a;赋予 NFT 无限可能的应用 5.…