题目的意思是,如果其他箱子有球就计算移到第i个盒子需要走的步数。
第一个只需要考虑右边的元素,从第二个开始,就需要考虑左边的元素了,比如第二个元素需要在第一个元素leaft是0的条件下加一,相应的,当i一直后移就需要加相应数目左边元素为1的数目,左边同理,i每次加一,可以看为right全部向左移动一次,需要用原来的count减right的值。
class Solution {
public int[] minOperations(String boxes) {
int right=0;
int left=0;
int count=0;
int [] answer=new int [boxes.length()];
if(boxes.charAt(0)=='1'){
left++;
}
for (int i=1; i<boxes.length(); i++){
if(boxes.charAt(i)=='1'){
count+=i;
right++;}
}
answer[0]=count;
for(int i=1; i<boxes.length(); i++){
count=count+left-right;
if(boxes.charAt(i)=='1'){
right--;
left++;
}
answer[i]=count;}
return answer;
}}