//在首先我会发现在后续执行中都会是找到最小数之后减去最小数的重复步骤,这里就可以采用递归,我们递归到数组全是零的情况下,之后弹出
//所需要0,就相当于从全是0的数组中不断加到原数组需要几步
int dfs(int *nums,int numsSize){
int ans;
int j=0;
for(int i=0;i<numsSize;i++){
if(nums[i]==0){j++;}
}
if(j==numsSize){return 0;}
int min=10000;
for(int i=0;i<numsSize;i++){
if(nums[i]<min&&nums[i]!=0){min=nums[i];}
}
for(int i=0;i<numsSize;i++){
if((nums[i]-min)>=0){nums[i]=nums[i]-min;}
else{nums[i]=0;}
}
ans=dfs(nums,numsSize)+1;
return ans;
}
int minimumOperations(int* nums, int numsSize){
int j=0;
for(int i=0;i<numsSize;i++){
if(nums[i]==0){j++;}
}
if(j==numsSize){return 0;}
if(numsSize==1){return 1;}
return dfs(nums,numsSize);
}