LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】

news2024/11/16 7:30:34

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】

  • 题目描述:
  • 解题思路一:贪心
  • 解题思路二:一次遍历统计'1'的个数,找'0'后累加左边的'1'的个数
  • 解题思路三:

题目描述:

桌子上有 n 个球,每个球的颜色不是黑色,就是白色。

给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。

在每一步中,你可以选择两个相邻的球并交换它们。

返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的 最小步数」。

示例 1:

输入:s = “101”
输出:1
解释:我们可以按以下方式将所有黑色球移到右侧:

  • 交换 s[0] 和 s[1],s = “011”。
    最开始,1 没有都在右侧,需要至少 1 步将其移到右侧。
    示例 2:

输入:s = “100”
输出:2
解释:我们可以按以下方式将所有黑色球移到右侧:

  • 交换 s[0] 和 s[1],s = “010”。
  • 交换 s[1] 和 s[2],s = “001”。
    可以证明所需的最小步数为 2 。
    示例 3:

输入:s = “0111”
输出:0
解释:所有黑色球都已经在右侧。

提示:

1 <= n == s.length <= 10^5
s[i] 不是 ‘0’,就是 ‘1’。

解题思路一:贪心

在这里插入图片描述

class Solution:
    def minimumSteps(self, s: str) -> int:
        ans = cnt1 = 0
        for c in s:
            if c == '1':
                cnt1 += 1
            else:
                ans += cnt1
        return ans

时间复杂度:O(n)
空间复杂度:O(1)

解题思路二:一次遍历统计’1’的个数,找’0’后累加左边的’1’的个数

想不到贪心怎么办?背吧。

class Solution:
    def minimumSteps(self, s):
        ans, sum = 0, 0
        for i in range(len(s)):
            if s[i] == '1':
                sum += 1
            else:
                ans += sum
        return ans

时间复杂度:O(n)
空间复杂度:O(1)

解题思路三:


时间复杂度:O(n)
空间复杂度:O(1)


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

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

相关文章

深圳比创达EMC|EMC电磁兼容性行业:技术前沿与市场挑战

在当今高度信息化的社会&#xff0c;电磁兼容性&#xff08;EMC&#xff09;技术已成为各行各业不可或缺的一部分。随着电子设备的日益增多和复杂化&#xff0c;电磁环境日益复杂&#xff0c;电磁兼容性行业面临着前所未有的挑战和机遇。 一、EMC电磁兼容性行业的技术基础 电…

0基础学习区块链技术——分叉

区块链是一种分布式存储技术。一谈到分布式服务&#xff0c;就会提及CAP原则。 CAP原则是以下三个单词的首字母&#xff1a; Consistency&#xff08;一致性&#xff09;&#xff1a;系统在执行某项操作后&#xff0c;仍然处于一致的状态。在分布式系统中&#xff0c;更新操作…

10分钟就会用的3D编辑器,帮你轻松实现Web3D交互自由!

近两年&#xff0c;AIGC技术可谓是在各行各业大放异彩&#xff0c;从AI绘画到AI写作&#xff0c;如今AI建模技术也悄然而至&#xff0c;只要输入文本就能直接AI生成3D模型。 △例&#xff1a;当输入“一个坐在睡莲上的蓝色箭毒蛙”这样的提示词时&#xff0c;对应的3D模型就会生…

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政线下预约等多场景应用支持H5+小程序+APP

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政按摩线下预约等多场景应用支持H5小程序APP 软件架构 前端&#xff1a;Uniapp-vue2.0 后端&#xff1a;Thinkphp6 前后端分离 前端支持&#xff1a; H5小程序双端APP&#xff08;安卓苹果&#xff09; 安装教程 【商业…

线性模型-分类

一、线性判别分析LDA 线性判别分析是一种经典的线性学习方法&#xff0c;在二分类问题上最早是Fisher提出的&#xff0c;亦称为Fisher判别分析。 Fisher判别分析是一种用于降维和分类的统计方法&#xff0c;旨在找到可以最好区分不同类别的特征。它基于类内方差和类间方差的比…

OCP 安装 OceanBase集群(企业版3.2.4.1)

创建集群 登录OCP界面 1.点击左侧工具栏中的集群 2.进入集群页面后 点击 右上角的创建集群 集群设置 进入 创建集群 页面&#xff0c;进行 目标集群 配置 集群种类 根据 生产环境 选择 分布式 或者 单机集中式&#xff0c;第一次安装 集群类型 选择 主集群。 注意&#xf…

图片格式怎么转成pdf,简单的方法

在现代数字化时代&#xff0c;图片格式转换成PDF已经成为许多人的日常需求。无论是为了存档、分享还是打印&#xff0c;将图片转换为PDF都是一项非常实用的技能。本文将详细介绍如何将图片格式转换成PDF的方法。 用浏览器打开 "轻云处理pdf官网&#xff0c;上传图片。 图…

HarmonyOS(32) @Link标签使用指南

Link 前言Link简介State和Link的同步场景使用示例参考资料 前言 之前写过Link的使用&#xff0c;最新的API有点变化&#xff0c;在此做个记录。 Link简介 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。。子组件变量发生变化&#xff0c;父组件也会随…

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误&#xff1a;Network is unreachable 解决步骤&#xff1a; 进入目录 进入/etc/sysconfig/network-scripts/&#xff0c; cd /etc/sysconfig/network-scripts/修改文件 vi ifcfg-ens33变更项 ONBOOTyes保存…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第7章——连续性

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 7. 连续性(Continuity) 本章首先讨论连续性的直观概念&#xff0c;并介绍与早期数学中常见的函数不同的函数。解释了连续性的定义&#xff0c;并演示了如何使用它来证明函数在一点上连续&#xff0c;以及证…

ABB velset 指令

VelSet 10,100;! v1000 情况下速度位1000*20% 最大速度位100 速度位 100

Unity3D测量距离实现方法(一)

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、Unity距离测量1-1 制作预制体1-2 编写测量的脚本 &#x1f449;二、鼠标点击模型进行测量&#x1f449;二、字体面向摄像机的方法&#x1f449;二、最短距离测量方法&#x1f449;三、壁纸分享…

vs code 导出插件 导入到新电脑上

1. 在 现在的电脑上 导出插件 在vscode 上执行 code --list-extensions > extensions.txt 然后项目的目录就有了一个文件 2. 将他复制到新电脑上&#xff0c;把文件放在项目的最外层&#xff08;跟上面的目录一样&#xff09; 执行命令 Get-Content extensions.txt | ForE…

快团团有货源的供货大团长如何给单个订单发货?

快团团团长给单个订单发货的步骤如下&#xff1a; 登录快团团商家后台&#xff1a;首先&#xff0c;你需要以团长的身份登录快团团的商家后台管理系统。 进入订单管理页面&#xff1a;登录后&#xff0c;在后台导航中找到并点击“订单管理”或类似的选项&#xff0c;进入订单列…

Python脚本自动填充数据和生成文档轻松办公

一&#xff0c;自动填充数据生成word文档 代码&#xff1a; from docx import Document# 创建一个新的Word文档对象 doc Document()# 添加标题 doc.add_heading(自动填充数据和生成文档, level1)# 添加段落 doc.add_paragraph(这是一个使用Python脚本自动填充数据并生成文档的…

SpringBoot 请求响应

SpringBoot 请求响应 来源于黑马程序员JavaWeb课程&#xff0c;总结笔记 1.ApiFox Apifox快速入门教程 2.基本参数 简单参数&#xff1a;在向服务器发起请求时&#xff0c;向服务器传递的是一些普通的请求数据。 //RequestController.java import jakarta.servlet.http.Htt…

Qt for Android 申请摄像头权限

步骤 1. 添加用户权限 AndroidManifest.xml 中新增&#xff08;不添加后面申请选项时不弹窗&#xff09; 或者再Qt Creator中直接添加 2. Qt代码申请权限 Qt自己封装好了一些常用的权限申请&#xff0c; 详情Qt Assistant文档搜索 QPermission查看 #include <QPermi…

层出不穷的大模型产品如何选

目录 1.概述 2.使用体验分享 2.1.功能情况 2.2.内容生成质量 2.3.隐私安全性 2.4.小结 3.独特优势和倾向选择 4.未来发展方向 4.1.技术创新 4.2.可持续可扩展性 4.3.用户体验 4.4.应用场景 4.5.政府赋能 4.6.小结 1.概述 目前市面上的大模型AIGC产品有很多&#…

【相关概念】经济金融中的Momentum

张张张三丰de思考与总结&#xff1a; 最近做的期货价格泡沫中&#xff0c;一直在说&#xff0c;momentum&#xff0c;momentum&#xff0c;momentum&#xff0c;那么究竟什么是momentum呢&#xff1f; 目前&#xff0c;在有关期货价格泡沫的研究文献中&#xff0c;一般都是研究…

创新科技,船舶岸电电源助力环保事业

岸电电源&#xff0c;也称为岸用变频电源或电子静止式岸电电源&#xff0c;是一种特别设计制造的大功率变频电源设备。这种设备主要针对船上、岸边码头等高温、高湿、高腐蚀性、大负荷冲击等恶劣使用环境&#xff0c;能够提供稳定的电源供应。它通常用于将岸边的工业用电&#…