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