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;
    }
};
相关推荐
梨子串桃子_17 小时前
推荐系统学习笔记 | PyTorch学习笔记
pytorch·笔记·python·学习·算法
夏鹏今天学习了吗17 小时前
【LeetCode热题100(83/100)】最长递增子序列
算法·leetcode·职场和发展
情缘晓梦.18 小时前
C语言指针进阶
java·开发语言·算法
北邮刘老师19 小时前
智能体治理:人工智能时代信息化系统的全新挑战与课题
大数据·人工智能·算法·机器学习·智能体互联网
AlenTech19 小时前
155. 最小栈 - 力扣(LeetCode)
算法·leetcode·职场和发展
mit6.82419 小时前
正反两次扫描|单调性cut
算法
Yzzz-F19 小时前
牛客小白月赛127 E
算法
大锦终20 小时前
递归回溯综合练习
c++·算法·深度优先
Keep__Fighting20 小时前
【神经网络的训练策略选取】
人工智能·深度学习·神经网络·算法
晚风吹长发20 小时前
初步了解Linux中的动静态库及其制作和使用
linux·运维·服务器·数据结构·c++·后端·算法