第231场周赛 5698. 构成特定和需要添加的最少元素
思路
- 算出原数组与 $goal$ 的差值。
- 用 $limit$ 填补这个差值,计算次数
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public: int minElements(vector<int>& nums, int limit, int goal) { int len = nums.size(); long long int preSum = 0; for (int i = 0; i < len; ++i) { preSum += nums[ i ]; } int count = 0; long long int rest = goal - preSum; if ( abs(rest) % limit == 0) count = ( abs(rest) / limit ); else count = 1 + ( abs(rest) / limit ); return count; } };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { public: int minElements(vector<int>& nums, int limit, int goal) { long long s=0; for(auto i:nums) { s+=i; } long long target=abs(goal-s); long long res=0; for(int i=limit;i;i--) { while(target) { long long temp=0; temp=target; if(target/i>0) { target%=i; } if(target>=0) res+=temp/i; if(target<i) { break; } } if(target==0) return res; } return res; } };
|