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;
    }
};
相关推荐
AuroraWanderll7 分钟前
类和对象(六)--友元、内部类与再次理解类和对象
c语言·数据结构·c++·算法·stl
leaves falling9 分钟前
c语言-给定两个数,求这两个数的最大公约数
数据结构·算法
SamtecChina202310 分钟前
Electronica现场演示 | 严苛环境下的56G互连
大数据·网络·人工智能·算法·计算机外设
Tim_1010 分钟前
【C++入门】05、复合类型-数组
开发语言·c++·算法
jikiecui11 分钟前
信奥崔老师:三目运算 (Ternary Operator)
数据结构·c++·算法
无限进步_12 分钟前
【C语言&数据结构】另一棵树的子树:递归思维的双重奏
c语言·开发语言·数据结构·c++·算法·github·visual studio
t1987512812 分钟前
同伦(Homotopy)算法求解非线性方程组
算法
圣保罗的大教堂12 分钟前
leetcode 1266. 访问所有点的最小时间 简单
leetcode
Elwin Wong18 分钟前
从 Louvain 到 Leiden:保证社区连通性的社区检测算法研究解读
算法·社区检测·graphrag·louvain·leiden
liu****19 分钟前
git工具
git·python·算法·机器学习·计算机基础