 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find minimum number of operations to move all balls to each box in Python
Suppose we have a binary string called boxes, where boxes[i] is '0' indicates the ith box is empty, and '1' indicates it contains one ball. Now, in one operation, we can move one ball from a box to an adjacent box. After doing so, there may be more than one ball in some boxes. We have to find an array answer of size n, where answer[i] is the minimum number of operations needed to move all the balls to the ith box.
So, if the input is like boxes = "1101", then the output will be [4, 3, 4, 5]
- To put all balls on first box, we have to take from box2 with one operation and from last ball by three operations, so total 4 operations. 
- To put all balls on second box, we have to take from box1 with one operation and from last ball by two operations, so total 3 operations. 
- To put all balls on third box, we have to take from box2 and last with one operation each and from box1 by two operations, so total 4 operations. 
- To put all balls on last box, we have to take from box1 with three operations and from box2 with two operations, so total 5 operations. 
To solve this, we will follow these steps −
- left := 0, right := 0, dist := 0 
-  for i in range 0 to size of boxes - 1, do -  if boxes[i] is same as "1", then - dist := dist + i 
-  if i is same as 0, then - left := left + 1 
 
-  otherwise, - right := right + 1 
 
 
 
-  
- arr := a list and initially put dist into it 
-  for i in range 1 to size of boxes - 1, do - insert arr[i-1] + left - right at the end of arr 
-  if boxes[i] is same as "1", then - left := left + 1 
- right := right - 1 
 
 
- return arr 
Example
Let us see the following implementation to get better understanding −
def solve(boxes): left = 0 right = 0 dist = 0 for i in range(len(boxes)): if boxes[i] == "1": dist += i if i == 0: left += 1 else: right += 1 arr = [dist] for i in range(1, len(boxes)): arr.append(arr[i-1] + left - right) if boxes[i] == "1": left += 1 right -= 1 return arr boxes = "1101" print(solve(boxes))
Input
"1101"
Output
[4, 3, 4, 5]
