LeetCode 2222. 选择建筑的方案数

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个下标从 0 开始的二进制字符串 s ,它表示一条街沿途的建筑类型,其中:

  • s[i] = '0' 表示第 i 栋建筑是一栋办公楼,
  • s[i] = '1' 表示第 i 栋建筑是一间餐厅。

作为市政厅的官员,你需要随机 选择 3 栋建筑。
然而,为了确保多样性,选出来的 3 栋建筑 相邻 的两栋不能是同一类型。

比方说,给你 s = "001101" ,我们不能选择第 1 ,3 和 5 栋建筑,因为得到的子序列是 “011” ,有相邻两栋建筑是同一类型,所以 不合 题意。

请你返回可以选择 3 栋建筑的 有效方案数

示例 1:
输入:s = "001101"
输出:6
解释:
以下下标集合是合法的:
- [0,2,4] ,从 "001101" 得到 "010"
- [0,3,4] ,从 "001101" 得到 "010"
- [1,2,4] ,从 "001101" 得到 "010"
- [1,3,4] ,从 "001101" 得到 "010"
- [2,4,5] ,从 "001101" 得到 "101"
- [3,4,5] ,从 "001101" 得到 "101"
没有别的合法选择,所以总共有 6 种方法。示例 2:
输入:s = "11100"
输出:0
解释:没有任何符合题意的选择。提示:
3 <= s.length <= 10^5
s[i] 要么是 '0' ,要么是 '1'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-ways-to-select-buildings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 算出所有的 0 1 的个数
  • 只有两种模式 101, 010
  • 以每个0为中心,两侧1的个数相乘就是方案数;以每个1为中心,两侧0的个数相乘就是方案数,全部加总就是答案
class Solution:def numberOfWays(self, s: str) -> int:zero = s.count('0')one = len(s) - zeroans = 0left0 = 0  # 010 模式for i in range(len(s)):if s[i] == '0':left0 += 1else:ans += left0*(zero-left0)left1 = 0  # 101 模式for i in range(len(s)):if s[i] == '1':left1 += 1else:ans += left1*(one-left1)return ans

632 ms 15.5 MB Python3


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

内存管理 内存泄漏

垃圾回收机制是周期性的&#xff0c;按照特定的周期循环&#xff0c;或者按照预先定义的时间执行最流行的回收机制是mark-and-sweep当一个变量进入当前上下文&#xff0c;那么会被标示为在上下文中&#xff0c;内存不会被释放&#xff0c;当他离开会被标示为不在上下文&#xf…

LeetCode 2224. 转化时间需要的最少操作数(贪心)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 current 和 correct &#xff0c;表示两个 24 小时制时间 。 24 小时制时间 按 "HH:MM" 进行格式化&#xff0c;其中 HH 在 00 和 23 之间&#xff0c;而 MM 在 00 和 59 之间。 最早的 24 小时制时间为 00:00 &…

移动端WEB开发之响应式布局(响应式开发原理、bootstrap、阿里百秀案例)

移动端WEB开发之响应式布局 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置&#xff0c;从而适配不同设备的目的。 设备的划分情况&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><…

【原创】Java实现手机号码归属地查询

网络上已经有很多的手机号码归属地查询的API接口&#xff0c;但是这些接口总是有一些大大小小的缺陷。 总结一下这些缺陷&#xff1a; 1、要直接将它的搜索框链接形式粘到自己的页面&#xff0c;点击查询的时候还要跳转到他们的网站来展示归属地结果 2、提供接口的API&#xff…

jQuery学习笔记系列(三)——事件注册、事件处理、事件对象、拷贝对象、多库共存、jQuery插件、toDoList综合案例

day03 - jQuery 学习目标&#xff1a; 能够说出4种常见的注册事件 能够说出 on 绑定事件的优势 能够说出 jQuery 事件委派的优点以及方式 能够说出绑定事件与解绑事件 能够说出 jQuery 对象的拷贝方法 能够说出 jQuery 多库共存的2种方法 能够使用 jQuery 插件 1.1. jQuery 事件…

LeetCode 2225. 找出输掉零场或一场比赛的玩家(计数)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 matches 其中 matches[i] [winneri, loseri] 表示在一场比赛中 winneri 击败了 loseri 。 返回一个长度为 2 的列表 answer &#xff1a; answer[0] 是所有 没有 输掉任何比赛的玩家列表。answer[1] 是所有恰好输掉 一场 比…

BZOJ4068 : [Ctsc2015]app

对于一个所选任务集合&#xff0c;如果对于任意时刻$i$&#xff0c;$i$前面所选任务数都不超过i的话&#xff0c;那么这些任务可以全选。 维护一棵线段树$T$&#xff0c;第$i$个位置一开始为$i$&#xff0c;每使用一个任务&#xff0c;$[t,T]$都要减$1$。 插入一个任务&#xf…

Log4j配置文件

Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的&#xff0c;它可接keyvalue格式的设置或xml格式的设置信息。通过配置&#xff0c;可以创建出Log4J的运行环境。 配置文件 Log4J配置文件的基本格式如下&#xff1a; #配置根Logger log4j.rootLog…

LeetCode 2226. 每个小孩最多能分到多少糖果(二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个 下标从 0 开始 的整数数组 candies 。数组中的每个元素表示大小为 candies[i] 的一堆糖果。你可以将每堆糖果分成任意数量的 子堆 &#xff0c;但 无法 再将两堆合并到一起。 另给你一个整数 k 。你需要将这些糖果分配给 k 个小孩&am…

指令系统——数据寻址(3)——堆栈寻址(详解)

一、总览 二、堆栈寻址 堆栈寻址&#xff1a;操作数存放在堆栈中&#xff0c;隐含使用堆栈指针&#xff08;SP&#xff09;作为操作数地址。堆栈是存储器&#xff08;或专用寄存器组&#xff09;中一块特定的按“后进先出&#xff08;LIFO&#xff09;” 原则管理的存储区&…

POJ1061 青蛙的约会(线性同余方程)

线性同余方程$ ax \equiv b \pmod n$可以用扩展欧几里得算法求解。 这一题假设青蛙们跳t次后相遇&#xff0c;则可列方程&#xff1a; $$ MtX \equiv NtY \pmod L$$ $$ (M-N)t \equiv Y-X \pmod L$$ 于是就构造出一个线性同余方程&#xff0c;即可对t求解&#xff0c;解出最小非…

指令系统 CISC和RISC(详解)

一、总览 二、CISC CISC:Complex Instruction Set Computer设计思路&#xff1a;一条指令完成一个复杂的基本功能。代表&#xff1a;86架构&#xff0c;主要用于笔记本、台式机等。 80-20规律&#xff1a;典型程序中80%的语句仅仅使用处理机中20%的指令 三、RISC RISC:Reduc…

LeetCode 2231. 按奇偶性交换后的最大数字

文章目录1. 题目2. 解题1. 题目 给你一个正整数 num 。你可以交换 num 中 奇偶性 相同的任意两位数字&#xff08;即&#xff0c;都是奇数或者偶数&#xff09;。 返回交换 任意 次之后 num 的 最大 可能值。 示例 1&#xff1a; 输入&#xff1a;num 1234 输出&#xff1a…

亲密接触Redis-第一天

引言nosql&#xff0c;大规模分布式缓存遍天下&#xff0c;Internet的时代在中国由其走得前沿&#xff0c;这一切归功于我国特色的电商。因此nosql、大数据技术在中国应用的比国外还要前沿。从这一章开始我们将开始进入到真正的SOA、PAAS、SAAS、互联网的领域&#xff0c;因此每…

Ajax 编程基础(一)

一、Ajax 基础 传统网站中存在的问题&#xff1a; 网速慢的情况下&#xff0c;页面加载时间长&#xff0c;用户只能等待表单提交后&#xff0c;如果一项内容不合格&#xff0c;需要重新填写所有表单内容页面跳转&#xff0c;重新加载页面&#xff0c;造成资源浪费&#xff0c…

读 大数据 有感

Form--> 大数据:正在到来的数据革命,以及它如何改变政府、商业与我们的生活 平装 – 2013年4月1日 涂子沛 (作者) 最小数据集(Minimum Data Set,MDS)最小数据集的概念起源于美国的医疗领域,用来统一医疗账单.最小数据集是指通过收集最少的数据,最好地掌握一个研究对象所具有…

LeetCode 2232. 向表达式添加括号后的最小结果

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 expression &#xff0c;格式为 "<num1><num2>" &#xff0c;其中 <num1> 和 <num2> 表示正整数。 请你向 expression 中添加一对括号&#xff0c;使得在添加之后&#xff0…

一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

一、建立你的第一个网站&#xff08;目标&#xff09; 前端开发 最终还是属于 Web 开发 中的一个分支&#xff0c;想要成为一名合格的前端开发人员&#xff0c;就必须要 充分理解Web 的概念。 构建一个专业的网站是一项巨大的工作&#xff01;对于新手我们应该从小事做起&#…

新年初六

儿子回老家第一天&#xff0c;生活变得很不规律&#xff0c;晚上刷夜看电影&#xff0c;早上睡到自然醒&#xff0c;小美明天开始上班&#xff0c;今天还能陪她放松一天&#xff0c;明天一个人在家休息一天之后初八开启新的工作模式。 全天宅在家里&#xff0c;正好把爸妈积攒…

LeetCode 2233. K 次增加后的最大乘积(优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个非负整数数组 nums 和一个整数 k 。每次操作&#xff0c;你可以选择 nums 中 任一 元素并将它 增加 1 。 请你返回 至多 k 次操作后&#xff0c;能得到的 nums的 最大乘积 。由于答案可能很大&#xff0c;请你将答案对 10^9 7 取余后…