Minimize Warehouse Transfer Cost
Problem statement
Basically, Amazon has its warehouses lined up in a circle, you can start from any warehouse move in either clockwise or anti-clockwise direction, the direction must remain the same throughout the remaining moves.
Each warehouse stores some items. The goal is to collect excess items from some warehouses and deliver them to others need them, so that each warehouse stores the same number of items in the end (guaranteed).
The distance between 2 adjacent warehouses is 1, and the cost of each product transfer is the distance the product is moved.
Complete the function minimizeWarehouseTransferCost in the editor.
minimizeWarehouseTransferCost has the following parameter:
int[] warehouses: an array of integers representing the number of items in each warehouse
long integer: the minimum cost to make all warehouses store the same number of items
Function
minimizeWarehouseTransferCost(warehouses: int[]) → longExamples
Example 1
warehouses = [6, 6, 6, 3, 4]return = 7The source compares two possible routes with costs 7 and 8. Since the problem asks for the minimum cost, the example output is 7.
We can optimally start from the first warehouse and collect 1 item, repeat the same for the following 2 warehouses and deliver 2 to the 4th warehouse and 1 to the 5th warehouse. In the end, each warehouse has 5 items and the total cost is 1 + 2 + 3 + 1 = 7. This is just a possible clockwise move, the optimal cost should consider the anti-clockwise direction as well and return the minimum cost.