1.题目
- 移动所有球到每个盒子所需的最小操作数
2.思路
解题思路
动态规划:dp[i]=dp[i-1]+l(左边1个数)+r(右边1个数);
3.代码
class Solution {
public:
vector<int> minOperations(string boxes) {
int lens=boxes.size(),temp,l=0,n=0,gt=1,r=0;
//计算dp【0】,dp[0]为右边所有1的下标到下标0的路径总和
vector<int> dp(lens+1,0);
for(char i:boxes)
{
if(i=='1')
{
dp[0]+=n;
r++;
}
n++;
}
//根据dp[i]=dp[i-1]+l(左边1个数)+r(右边1个数)得出dp[i];
for(char i:boxes)
{
if(i=='1')
l++;
dp[gt] = dp[gt-1]+2*l-r;
gt++;
}
if(!dp.empty())dp.pop_back();
return dp;
}
};