aboutsummaryrefslogtreecommitdiff
path: root/separate_black_white_balls.c
diff options
context:
space:
mode:
Diffstat (limited to 'separate_black_white_balls.c')
-rw-r--r--separate_black_white_balls.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/separate_black_white_balls.c b/separate_black_white_balls.c
new file mode 100644
index 0000000..340e539
--- /dev/null
+++ b/separate_black_white_balls.c
@@ -0,0 +1,27 @@
+// 2938. Separate Black and White Balls
+#include "leetcode.h"
+
+/*
+ * there are 'n' balls on a table, each ball has a colour black or white. you
+ * are given a 0-indexed binary string 's' of length 'n', where 1 and 0
+ * represent black and white balls respectively. in each step, you can choose
+ * two adjacent balls and swap them. return the minimum number of steps to group
+ * all the black balls to the right and all the white balls to the left
+ */
+
+long long minimumSteps(char *s) {
+ long long one_cnt = 0, swap_cnt = 0;
+ for (int i = 0; s[i] != '\0'; i++) {
+ if (s[i] == '1')
+ one_cnt++;
+ else
+ swap_cnt += one_cnt;
+ }
+ return swap_cnt;
+}
+
+int main() {
+ char *s1 = "101", *s2 = "100";
+ printf("%lld\n", minimumSteps(s1)); // expect: 1
+ printf("%lld\n", minimumSteps(s2)); // expect: 2
+}