leetcode 2938.区分白球与黑球

leetcode 2938.区分白球与黑球(传送门)

**思路:**把1放右边,0放左边,只要把0全部放好那么1肯定也全部放好了。考虑将靠左的0放在靠左的位置,也就是第i个0要放到下标为i-1的位置,所以直接遍历并更新已就位的0的个数即可。

时间复杂度 O(n)

cpp 复制代码
class Solution {
public:
    long long minimumSteps(string s) {
        long long n=s.length(),sum=0,ct=0;
        for(int i=0;i<n;i++){
            if(s[i]=='0'){
                sum+=i-ct;
                ct++;
            }
        }
        return sum;
    }
};
相关推荐
少许极端4 分钟前
算法奇妙屋(十五)-BFS解决边权为1的最短路径问题
数据结构·算法·bfs·宽度优先·队列·图解算法·边权为1的最短路径问题
c骑着乌龟追兔子16 分钟前
Day 27 常见的降维算法
人工智能·算法·机器学习
hetao173383718 分钟前
2025-12-02~03 hetao1733837的刷题记录
c++·算法
田里的水稻20 分钟前
math_旋转变换
算法·几何学
ada7_28 分钟前
LeetCode(python)——94.二叉
python·算法·leetcode·链表·职场和发展
AI视觉网奇31 分钟前
躯体驱动 算法学习笔记
人工智能·算法
不穿格子的程序员35 分钟前
从零开始写算法——普通数组类题:数组操作中的“翻转技巧”与“前后缀分解”
数据结构·算法
逝雪Yuki38 分钟前
简单多源BFS问题
算法·leetcode·bfs·广度优先遍历
curry____30339 分钟前
study in PTA(高精度算法与预处理)(2025.12.3)
数据结构·c++·算法·高精度算法
ChoSeitaku1 小时前
高数强化NO6|极限的应用|连续的概念性质|间断点的定义分类|导数与微分
人工智能·算法·分类