[leetcode 智力题] 2938. 区分黑球与白球 M

简介: [leetcode 智力题] 2938. 区分黑球与白球 M

桌子上有 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 <= 105

s[i] 不是 ‘0’,就是 ‘1’。

思路: 计算0左边有多少个1即是需要移动的次数

class Solution {
    public long minimumSteps(String s) {
         /**
         * 010101
         * 000111
         */
        long ans = 0;
        long one = 0;
        for(char ch: s.toCharArray()) {
            if(ch == '1'){
                one++;
            } else {
                ans += one;
            }
        }
        return ans;
    }
}
相关文章
|
8月前
|
C#
【力扣每日一题】1207. 独一无二的出现次数
【力扣每日一题】1207. 独一无二的出现次数
|
8月前
|
人工智能
【LeetCode-每日一题】-1014. 最佳观光组合
【LeetCode-每日一题】-1014. 最佳观光组合
【每日一题】牛客网——链表分割
【每日一题】牛客网——链表分割
|
算法 测试技术 容器
代码随想录算法训练营第四十二天 | LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
代码随想录算法训练营第四十二天 | LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
50 1
|
算法
代码随想录算法训练营第二十五天 | LeetCode 216. 组合总和 III、17. 电话号码的字母组合
代码随想录算法训练营第二十五天 | LeetCode 216. 组合总和 III、17. 电话号码的字母组合
60 0
|
算法 网络架构
代码随想录算法训练营第三十三天 | LeetCode 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果
代码随想录算法训练营第三十三天 | LeetCode 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果
65 0
|
算法 算法框架/工具 Android开发
LeetCode 周赛上分之旅 #47 前后缀分解结合单调栈的贡献问题
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
56 0
|
算法 测试技术 Android开发
LeetCode 周赛上分之旅 # 36 KMP 字符串匹配殊途同归
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
86 0
二叉树详解一万字(基础版)看着一篇就够了(下)
对于堆的调整相当于是对数组的一种调整,将数组的首地址传进来,要调整的数组的长度,相当于是退出的循环条件,向下传给进来parent(root),向上传给child(size-1),然后再用一个表示另外一个。将参数传进来之后进行比较,先比较两个孩子,找出小的那个,然后交换较小孩子和双亲节点,在比较左右孩子的时候要保证右孩子也存在才可以进行比较,就是child+1<size,原因就是这里是堆,是完全二叉树
70 0
|
C++ ice Perl
【力扣·每日一题】748. 最短补全词(C++ 模拟)
【力扣·每日一题】748. 最短补全词(C++ 模拟)
84 0
【力扣·每日一题】748. 最短补全词(C++ 模拟)