本文主要是介绍力扣1354.多次求和构造目标数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
力扣1354.多次求和构造目标数组
-
优先队列
- 倒着把数组推回全是1的状态
- 每次取最大数执行操作
- 减掉其他数之和
-
class Solution {public:bool isPossible(vector<int>& target) {long long sum = 0;priority_queue<long long> q;for(int ev:target){sum += ev;q.push(ev);}while(q.top() != 1){//取出最大数long long curMax = q.top();q.pop();//其他数之和long long otherSum = sum - curMax;//如果其他数之和不能+1变成curmaxif(curMax - otherSum < 1 || otherSum == 0) return false;//取余数,能减几个减几个long long temp = curMax % otherSum;//留一个if(temp == 0) temp = otherSum;q.push(temp);//更新当前和sum = sum - curMax + temp;}return true;}};
这篇关于力扣1354.多次求和构造目标数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!