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;
    }
};
相关推荐
shehuiyuelaiyuehao10 分钟前
22Java对象的比较
java·python·算法
Dev7z1 小时前
滚压表面强化过程中变形诱导位错演化与梯度晶粒细化机理的数值模拟研究
人工智能·python·算法
吴秋霖1 小时前
apple游客下单逆向分析
python·算法·逆向分析
YunchengLi3 小时前
【计算机图形学中的四元数】2/2 Quaternions for Computer Graphics
人工智能·算法·机器学习
CUC-MenG3 小时前
Codeforces Round 1079 (Div. 2)A,B,C,D,E1,E2,F个人题解
c语言·开发语言·数学·算法
666HZ6664 小时前
数据结构4.0 串
c语言·数据结构·算法
weixin_421585014 小时前
常微分方程
算法
文艺倾年4 小时前
【免训练&测试时扩展】通过任务算术转移思维链能力
人工智能·分布式·算法
curry____3035 小时前
dfs全排列和全组合问题
算法·深度优先
想做功的洛伦兹力15 小时前
2026/2/12日打卡
开发语言·c++·算法