大型网站 网站建设,做网站赔了8万,怎么让关键词快速排名首页,动画制作流程得到目标数组的最少函数调用次数
给你一个与 nums 大小相同且初始值全为 0 的数组 arr #xff0c;请你调用以上函数得到整数数组 nums 。
请你返回将 arr 变成 nums 的最少函数调用次数。
答案保证在 32 位有符号整数以内。
示例 1#xff1a;
输入#xff1a;nums […得到目标数组的最少函数调用次数
给你一个与 nums 大小相同且初始值全为 0 的数组 arr 请你调用以上函数得到整数数组 nums 。
请你返回将 arr 变成 nums 的最少函数调用次数。
答案保证在 32 位有符号整数以内。
示例 1
输入nums [1,5] 输出5 解释给第二个数加 1 [0, 0] 变成 [0, 1] 1 次操作。 将所有数字乘以 2 [0, 1] - [0, 2] - [0, 4] 2 次操作。 给两个数字都加 1 [0, 4] - [1, 4] - [1, 5] 2 次操作。 总操作次数为1 2 2 5 。 示例 2
输入nums [2,2] 输出3 解释给两个数字都加 1 [0, 0] - [0, 1] - [1, 1] 2 次操作。 将所有数字乘以 2 [1, 1] - [2, 2] 1 次操作。 总操作次数为 2 1 3 。 示例 3
输入nums [4,2,5] 输出6 解释初始[0,0,0] - [1,0,0] - [1,0,1] - [2,0,2] - [2,1,2] - [4,2,4] - [4,2,5] nums 数组。 示例 4
输入nums [3,2,2,4] 输出7 示例 5
输入nums [2,4,8,16] 输出8
提示
1 nums.length 10^5 0 nums[i] 10^9
分析二进制分析最大数不断右移。因为乘2操作是所有数都要做的而加1操作是对单个数做的所以加1永远没法减少能减少的就是乘2操作于是我们尽可能让小数和大数一起乘2所以这个题用2进制分析就容易多了这种求操作数组最小数的题目容易和数学二进制相关。
class Solution {
public:int cnt0;int minOperations(vectorint nums) {sort(nums.begin(),nums.end(),greaterint());for(int i0;inums.size();i){while(nums[i]){if(nums[i]%21)cnt;if(i0)cnt;nums[i]1;// coutnums[i]endl;} }return cnt-1;}
};