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

3211、生成不含相邻零的二进制字符串-cangjie

题目

3211、生成不含相邻零的二进制字符串

思路

dfs

代码

class Solution {let numRune = [r'0', r'1']func dfs(arr: ArrayList<Rune>, ans: ArrayList<String>,n: Int64):Unit{if(arr.size >= n){ans.insert(0, String(arr))// println("insert ${String(arr)}")return}// println("String(arr) = ${String(arr)}")for(i in 0..=1){// println("for i = ${i}")if(i == 0 && arr[arr.size-1] == r'0'){// println("continue")continue}var tmparr = ArrayList<Rune>(arr)tmparr.insert(arr.size, numRune[i])// println("String(tmparr) before dfs = ${String(tmparr)}")dfs(tmparr, ans, n)// println("String(tmparr) after dfs = ${String(tmparr)}")}// println("return")}func validStrings(n: Int64): ArrayList<String> {var ans = ArrayList<String>()for(i in 0..=1){var arr = ArrayList<Rune>()arr.insert(arr.size, numRune[i])dfs(arr, ans, n)}return ans}
}

复杂度

时间复杂度:O(sizeof(ans))
每个字符位置有0和1两种选择的话是O(2^n),但是由于做的剪枝,所以相对于全访问,复杂度降低

if(i == 0 && arr[arr.size-1] == r'0'){// println("continue")continue}

空间复杂度:O(n^2)
最深最多保存n个size in 1..narr

遇到的坑

1、深浅拷贝问题

var tmparr = ArrayList<Rune>(arr)

如果这一行使用

var tmparr = arr

则在后续修改tmparr的时候,因为是浅拷贝(引用拷贝),因此会直接修改到arr,导致程序出错
n=3时
var tmparr = arr结果

String(arr) = 0
for i = 0
continue
for i = 1
String(tmparr) before dfs = 01
String(arr) = 01
for i = 0
String(tmparr) before dfs = 010
insert 010
String(tmparr) after dfs = 010
for i = 1
String(tmparr) before dfs = 0101
insert 0101
String(tmparr) after dfs = 0101
return
String(tmparr) after dfs = 0101
return
String(arr) = 1
for i = 0
String(tmparr) before dfs = 10
String(arr) = 10
for i = 0
continue
for i = 1
String(tmparr) before dfs = 101
insert 101
String(tmparr) after dfs = 101
return
String(tmparr) after dfs = 101
for i = 1
String(tmparr) before dfs = 1011
insert 1011
String(tmparr) after dfs = 1011
return

var tmparr = ArrayList(arr)结果

String(arr) = 0
for i = 0
continue
for i = 1
String(tmparr) before dfs = 01
String(arr) = 01
for i = 0
String(tmparr) before dfs = 010
insert 010
String(tmparr) after dfs = 010
for i = 1
String(tmparr) before dfs = 011
insert 011
String(tmparr) after dfs = 011
return
String(tmparr) after dfs = 01
return
String(arr) = 1
for i = 0
String(tmparr) before dfs = 10
String(arr) = 10
for i = 0
continue
for i = 1
String(tmparr) before dfs = 101
insert 101
String(tmparr) after dfs = 101
return
String(tmparr) after dfs = 10
for i = 1
String(tmparr) before dfs = 11
String(arr) = 11
for i = 0
String(tmparr) before dfs = 110
insert 110
String(tmparr) after dfs = 110
for i = 1
String(tmparr) before dfs = 111
insert 111
String(tmparr) after dfs = 111
return
String(tmparr) after dfs = 11
return

2、ArrayList 的 insert 位置问题
如果是顺序不敏感的ans,就可以直接在 0 位置插入 String(arr),但是如果是对顺序敏感的arr,则需要插入到队尾,即arr.size,注意不是size-1,相当于end()迭代器的位置
3、Rune(i)使用问题
在一开始写的时候,我尝试过
···cangjie
arr.insert(arr.size, Rune(i))
···
这样会导致乱码

最后还是

let numRune = [r'0', r'1']
arr.insert(arr.size, numRune[I])

结果

cangjie

相关文章:

3211、生成不含相邻零的二进制字符串-cangjie

题目 3211、生成不含相邻零的二进制字符串 思路 dfs 代码 class Solution {let numRune [r0, r1]func dfs(arr: ArrayList<Rune>, ans: ArrayList<String>,n: Int64):Unit{if(arr.size > n){ans.insert(0, String(arr))// println("insert ${String(…...

【wpf】wpf程序联合控制台测试

如果在wpf的工程里面&#xff0c;想通过控制台输出或者调试&#xff0c;可以点开项目属性&#xff0c;把输出输出类型改为控制台应用输出&#xff0c;这样调试程序时&#xff0c;wpf的界面和控制台界面都会同时打开&#xff0c;而且写的控制台代码都会有效&#xff01; 设置如…...

使用 Spring Doc 为 Spring REST API 生成 OpenAPI 3.0 文档

Spring Boot 3 整合 springdoc-openapi 概述 springdoc-openapi 是一个用于自动生成 OpenAPI 3.0 文档的库&#xff0c;它支持与 Spring Boot 无缝集成。通过这个库&#xff0c;你可以轻松地生成和展示 RESTful API 的文档&#xff0c;并且可以使用 Swagger UI 或 ReDoc 进行…...

ssm基于ssm框架的滁艺咖啡在线销售系统+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 3 2.1 MYSQ…...

微信小程序 - 动画(Animation)执行过程 / 实现过程 / 实现方式

前言 因官方文档描述不清晰,本文主要介绍微信小程序动画 实现过程 / 实现方式。 实现过程 推荐你对照 官方文档 来看本文章,这样更有利于理解。 简单来说,整个动画实现过程就三步: 创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的 export 方法…...

【Linux】nohup 命令

【Linux】nohup 命令 1. 语法格式2. 实例3. 查找后台进程 nohup 英文全称 no hang up&#xff08;不挂起&#xff09;&#xff0c;用于在系统后台不挂断地运行命令&#xff0c;退出终端不会影响程序的运行。 nohup 命令&#xff0c;在默认情况下&#xff08;非重定向时&#x…...

CSS、Less、Scss

CSS、Less和SCSS都是用于描述网页外观的样式表语言&#xff0c;但它们各自具有不同的特点和功能。以下是对这三者的详细阐述及区别对比&#xff1a; 详细阐述 CSS&#xff08;Cascading Style Sheets&#xff09; 定义&#xff1a;CSS是一种用来表现HTML或XML等文件样式的计算机…...

[笔记] ffmpeg docker编译环境搭建

文章目录 环境参考dockerfile 文件步骤常见问题docker 构建镜像出现 INTERNAL_ERROR 失败? 总结 环境 docker 环境 系统centos 7.9 (无所谓了 你用docker编译就无所谓系统了) ffmpeg3.3 参考 https://blog.csdn.net/jiedichina/article/details/71438112 dockerfile 文件 …...

基于SSM的心理咨询管理管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的心理咨询管理管理系统拥有三个角色&#xff1a;学生用户、咨询师、管理员 管理员&#xff1a;学生管理、咨询师管理、文档信息管理、预约信息管理、测试题目管理、测试信息管理…...

南开大学《2023年+2022年810自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《南开大学810自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2023年真题 2022年真题 Part1&#xff1a;2023年2022年完整版真题 2023年真题 2022年真题…...

【算法】Kruskal最小生成树算法

目录 一、最小生成树 二、Kruskal算法求最小生成树 三、代码 一、最小生成树 什么是最小生成树&#xff1f; 对于一个n个节点的带权图&#xff0c;从中选出n-1条边&#xff08;保持每个节点的联通&#xff09;构成一棵树&#xff08;不能带环&#xff09;&#xff0c;使得…...

Pocket通常指的是一种特定的凹形或凹槽

在几何和计算机辅助设计&#xff08;CAD&#xff09;中&#xff0c;“Pocket”通常指的是一种特定的凹形或凹槽&#xff0c;用于表示在物体表面上挖出的区域。其主要特点包括&#xff1a; 凹形区域&#xff1a;Pocket 是一个在三维模型中内凹的区域&#xff0c;通常从物体的表面…...

Cesium基础-(Entity)-(Billboard)

里边包含Vue、React框架代码 2、Billboard 广告牌 Cesium中的Billboard是一种用于在3D场景中添加图像标签的简单方式。Billboard提供了一种方法来显示定向的2D图像,这些图像通常用于表示简单的标记、符号或图标。以下是对Billboard的详细解读: 1. Billboard的定义和特性 B…...

从0到1,解读安卓ASO优化!

大家好&#xff0c;我是互金行业的一名ASO运营专员&#xff0c;目前是负责我们两个APP的ASO方面的维护&#xff0c;今天分享的内容主要是关于安卓ASO优化方案。 大致内容分为三块&#xff1a; 首先我要讲一下ASO是什么&#xff1b;接下来就是安卓的渠道的选择&#xff0c;安卓…...

go语言中流程控制语句

Go语言中的流程控制语句包括条件判断、循环和分支控制。以下是详细介绍&#xff1a; 1. 条件判断语句 if 语句 Go语言的 if 语句与其他语言类似&#xff0c;支持基本的条件判断。 if 条件 {// 执行代码 }if-else 语句&#xff1a; if 条件 {// 执行代码 } else {// 执行代码…...

k8s 部署 emqx

安装cert-manager 使用Helm安装 helm repo add jetstack https://charts.jetstack.io helm repo update helm upgrade --install cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--set installCRDstrue如果通过helm命令安装失败&#x…...

CSS.导入方式

1.内部样式 在head的style里面定义如 <style>p1{color: brown;}</style> 2.内联样式 直接在标签的里面定义如 <p2 style"color: blue;">这是用了内联样式&#xff0c;蓝色</p2><br> 3.外部样式表 在css文件夹里面构建一个css文件…...

Linux之nfs服务器和dns服务器

NFS服务器 NFS&#xff08;Network File System&#xff0c;网络文件系统)&#xff0c;NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中&#xff0c;而在本地端的系统 中看来&#xff0c;那个远程主机的目录就好像是自己的一个磁盘分区一样。 注&am…...

大模型系列——AlphaZero/强化学习/MCTS

AlphaGo Zero无需任何人类历史棋谱&#xff0c;仅使用深度强化学习&#xff0c;从零开始训练三天的成就已远远超过了人类数千年积累的围棋知识。 1、围棋知识 &#xff08;1&#xff09;如何简单理解围棋知识 &#xff08;2&#xff09;数子法分胜负&#xff1a;https://zhu…...

原生js实现拖拽上传(拖拽时高亮上传区域)

文章目录 drop相关事件说明-MDN演示代码&#xff08;.html) drop相关事件说明-MDN 演示 代码&#xff08;.html) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"…...

python道格拉斯算法的实现

废话不多说 直接开干 需要用到模块 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple math #对浮点数的数学运算函数 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple shapely #提供几何形状的操作和分析&#xff0c;如交集、并集、差集等 pip install -i …...

STM32的hal库中,后缀带ex和不带的有什么区别

在STM32的HAL&#xff08;硬件抽象层&#xff09;库中&#xff0c;后缀带“ex”和不带“ex”的文件及其包含的内容存在显著的区别。这些区别主要体现在功能扩展性、使用场景以及API的层次上。 一、功能扩展性 不带“ex”后缀的文件&#xff1a; 这些文件通常包含标准的、核心…...

可观测性三大支柱

目录 可观测性成熟度模型 可观测性三大支柱的具体定义如下 指标 日志 链路 可观测性成熟度模型 可观测性成熟度模型&#xff0c;是一种用于衡量和评估企业软件系统内部可观测性的框架或方法&#xff0c;同 时也是一种用于反馈企业可观测性体系建设成熟度水平的框架或方法…...

【银河麒麟高级服务器操作系统·实例分享】裸金属服务器开机失败分析及处理建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 现象描述 裸金属物理服务器开机卡在EFI stub页面…...

模型剪枝实操

文章目录 实验报告&#xff1a;模型剪枝在图像分类任务中的应用摘要实验方法数据集和预处理模型架构剪枝过程实验设置 实验效果性能对比详细分析 结论 实验报告&#xff1a;模型剪枝在图像分类任务中的应用 摘要 本实验通过模型剪枝技术&#xff0c;对一个图像分类模型进行压…...

网安学习路线!最详细没有之一!看了这么多分享网安学习路线的一个详细的都没有!

零基础小白&#xff0c;到就业&#xff01;入门到入土的网安学习路线&#xff01; 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了&#xff01; 我把自己报班的系统学习路线&#xff0c;整理拿出来跟大家分享了&#xff01;点击下图&#xff0c;福利&#xff01; …...

Ubuntu18.04安装vscode1.94.2失败安装vscode1.84.2

系统环境&#xff1a;Ubuntu18.04.6 LTS 自己先去vscode官网下载好最新版本的vscode1.94.2&#xff08;不下也行&#xff0c;反正最新版也用不了&#xff0c;哈哈&#xff09; 网址&#xff1a;Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code ed…...

Redis中Lua脚本的使用场景

Redis 中的 Lua 脚本可以用于多种场景&#xff0c;以下是一些常见的使用场景及其对应的 Java 实现示例。 通过使用 Lua 脚本&#xff0c;可以在 Redis 中实现复杂的逻辑和原子操作&#xff0c;同时利用 Java 客户端&#xff08;如 Spring Data Redis&#xff09;方便地执行这些…...

重工业数字化转型创新实践:某国家特大型钢铁企业如何快速落地基于实时数仓的数据分析平台

使用 TapData&#xff0c;化繁为简&#xff0c;摆脱手动搭建、维护数据管道的诸多烦扰&#xff0c;轻量替代 OGG, Kettle 等同步工具&#xff0c;以及基于 Kafka 的 ETL 解决方案&#xff0c;「CDC 流处理 数据集成」组合拳&#xff0c;加速仓内数据流转&#xff0c;帮助企业…...

【linux】手动启动sshd

安装openssh-server修改配置文件启动 以下是在常见的Linux系统中手动开启sshd服务的步骤&#xff1a; 1.安装openssh-server CentOS/RHEL系统 首先&#xff0c;以具有管理员权限的用户&#xff08;通常是root&#xff09;登录到系统。检查sshd服务是否已经安装。可以使用以…...

wordpress图片站优化/html制作网页代码

目录 1、创建Shell文件 2、运行Shell脚本 3、Shell变量 4、Shell 字符串 5、Shell数组 6、Shell注释 7、Shell传递参数 8、Shell基本运算符 9、Shell echo命令 10、Shell printf 输出命令 11、Shell test 命令 12、Shell 流程控制 13、Shell函数 14、Shell 文件包…...

自己怎样建网站做微商/河北百度seo关键词

在helm中安装nginx&#xff0c;前面试了很多次由于仓库失效等各种原因都没有安装成功&#xff0c;但是这个名字(testnginx)可能是已经存在了&#xff0c;所以出现下面的错误时换个名字即可。 [rootk8smaster bin]# helm install testnginx apphub/nginx Error: INSTALLATION F…...

工商经营性网站备案/网站排名优化推广

现在华为主要是买不到手机的处理器芯片&#xff0c;所以理论上可以使用5G云计算的方式实现“云手机”&#xff0c;也就是将手机的计算功能放在远程服务器上&#xff0c;手机本身只作为联网和显示设备。这样一来即使手机没有处理器&#xff0c;也可以实现上网、打游戏等功能。其…...

档案信息网站开发利用/关键词免费

ansible 是一款轻量级自动化运维工具&#xff0c;由的 Python 语言开发&#xff0c;结合了多种自动化运维工具的特性&#xff0c;实现了批量系统配置&#xff0c;批量程序部署&#xff0c;批量命令执行等功能; ansible 是基于模块化实现批量操作的。 一、安装 控制机器 pip ins…...

境外网站 备案/哪里有培训班

点击上方“猿程之家”&#xff0c;选择“置顶公众号”关键时刻&#xff0c;第一时间送达&#xff01;阅读本文需要5分钟引言由于小编的记性不太好&#xff0c;每次在写代码的时候总是把通用mapper的方法记错&#xff0c;所以今天把通用mapper的常用方法做一下总结&#xff0c;方…...

兼职做网站这样的网站/指数基金什么意思

关注我们遇见更好的攻城狮自己!设计电路板最基本的过程可以分为三大步骤&#xff1a;电路原理图的设计&#xff0c;产生网络表&#xff0c;印制电路板的设计。不管是板上的器件布局还是走线等等都有着具体的要求。例如&#xff0c;输入输出走线应尽量避免平行&#xff0c;以免产…...